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?
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
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