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?