On Thu, Feb 11, 2010 at 05:37, Hemant Bhargava <li...@ruby-forum.com> wrote:
> Hi guys,
>
> I have given a validation function (validates_uniqueness_of :email) in
> my model because i want email to be unique.
>
> So the problem is that whenever i want to update a record then also it
> validates. I mean i dont want it to validate while updating the record.
> It should happen only when i am creating a new record.
>
> I tried these methods,
>
> 1) :on => { :create } options is not working.
> 2) before_save :check_duplication
>
>   def check_duplication
>     ModelName.validates_**_of :email
>   end
>
> But still snatching my head over it.. IF these two ways are not working
> what way it will work?
> --
> Posted via http://www.ruby-forum.com/.
>
> --
> 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 rubyonrails-t...@googlegroups.com.
> To unsubscribe from this group, send email to 
> rubyonrails-talk+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>

The reason that your approach doesn't work is that you're still
calling validates_uniqueness_of on your class. This is telling it,
"from now on, check uniqueness of this column any time the record is
saved". In effect, it's no different from just putting that code
directly in the class body.

You can use the :if option:

class ModelName
  validates_uniqueness_of :email, :if => proc { |model| model.new_record? }
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 rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to