每次保存对象时都会调用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?
答案 0 :(得分:0)
试试这个
validates :name, :uniqueness => true, :if => lambda {self.name_changed? }