jim <jimr6007@...> writes:

> 
> Rails version 2.3.8
> 
> I have a ticket model that has many comments
> 
> the comments have an attribute called "admin"  --  is this a comment
> added by an administrator

This seems weird.  Why not simply have a comment owned by a user, which may 
have an admin flag?

> 
> the ticket has an attribute called "admin_email_address"

Again weird.  Comments don't have email addresses - administrators do.

> 
> I want to validate when saving the ticket and say "if I have a new
> admin comment, make sure I have an admin_email_address"

I suggest you place conditional validations on the user model to ensure 
administrators have an email address specified.

> 
> In my ticket model, the method to do the validate looks like the
> following and works as expected except for one thing. If the :_destroy
> flag on the comment was set in my comment view partial (I want to
> delete a comment), it seems like this iterating over the comments with
> new_record? somehow resets that :_destroy flag.
> 
> Am I doing something wrong here? Or, could someone give me a hint on a
> more simple way to do this validation.?
> 
> Thanks !!
> 
> new_admin_comments = false
> self.comments.each do |comment|
>    new_admin_comments = true if comment.new_record? &&
> comment.admin_comment == true
> end

I am not sure how selecting ticket.comments will ever return 
comment.new_record? since they are already in the database.

Anyway, why not handle this in the view?  If the comment is owned by an admin, 
then alter the display.

> 
> if admin_email.blank? && new_admin_comments == true
>    errors.add_to_base("Admin email address required.")
> end
> 


This is not where it belongs.  Try:

class User < ActiveRecord::Base
  validates_presence_of :email, :if => :admin
end

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to