即使 some_field 属性没有更改(如果其他字段已更改), validates_uniqueness_of :some_field 似乎也会在“保存”时运行。这似乎很浪费,因为每个 validates_uniqueness_of 都需要一个数据库调用。我知道我可以将 Proc 传递给 validates_uniqueness_of 以检查 some_field 是否已更改,并且我正在考虑通过所有验证并尽可能地执行此操作。我想知道的是:
1) 这就是对性能感兴趣的人通常对他们的验证所做的事情吗?
2)为什么不是validates_uniqueness_of的默认行为先检查属性是否发生变化?
3) 是否有充分的理由对未更改的属性进行此类验证?
我正在使用 Rails 2.3(目前——我们正在努力升级)。我不知道这与 Rails 3 中的情况相同。