验证字段未更改时调用的唯一性?

时间:2012-11-05 12:47:33

标签: ruby-on-rails ruby validation

每次保存对象时都会调用validates :uniqueness,即使字段没有更改?这不是性能问题吗?

validates :name, :schedule_id, :uniqueness => true

似乎确实如此。因此,在运行验证之前,是否几乎总是需要确保进行了更改?由于每个要检查唯一性的字段都需要数据库命中。

这会更好:

validates :name, :schedule_id, :uniqueness => true, :if => "name_changed? || schedule_id_changed?"

这要好得多,如果有点冗长:

validates :name, :uniqueness => true, :if => :name_changed?
validates :schedule_id, :uniqueness => true, :if => schedule_id_changed?

请点击此处:https://gist.github.com/4017019

1 个答案:

答案 0 :(得分:0)

试试这个

   validates :name, :uniqueness => true, :if => lambda {self.name_changed? }