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.