Pau*_*nch 6 validation ruby-on-rails
即使 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 中的情况相同。
如果有人直接更改数据库中的值怎么办?
如果其他(非 Rails 应用程序)应用程序也访问数据库怎么办?
在上述所有场景中,您仍然希望数据有效,以便您的 Rails 应用程序按预期运行。如果数据被篡改(被其他应用程序或直接在数据库中),您的 Rails 应用程序会抛出错误,因为它不需要该数据。
话虽如此,这是默认行为。默认行为通常更具限制性,以便保持数据有效性并最大限度地减少错误、遗漏和偶然失误的范围。如果您担心您的情况下的性能,也许您的对象更新非常频繁,并且您对一个不经常更新的字段进行了冗长的自定义验证,并且您不想每次都运行该验证时间,那么按照您在问题中描述的方式自定义默认行为就非常有意义。
| 归档时间: |
|
| 查看次数: |
1019 次 |
| 最近记录: |