1

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

4

1 回答 1

1

尝试这个

   validates :name, :uniqueness => true, :if => lambda {self.name_changed? }
于 2012-11-05T12:50:45.687 回答