【发布时间】:2012-09-05 14:02:20
【问题描述】:
我有一个带有外键的模型。即使有一个数据库约束阻止重复的user_id 进入SomeClass 的表,我还是在模型中重复(实际上是先发制人)该验证,以便更优雅地处理它。所以我的模型看起来像这样:
class SomeClass < ActiveRecord::Base
belongs_to :user
validates_presence_of :user
validates_uniqueness_of :user_id
...
end
我花了一段时间才意识到需要这样做。在我看来,ActiveRecord 应该期望您在存在性和唯一性验证中始终使用user 或user_id。这将使:
validates :user, :presence => true, :uniqueness => true
或:
validates :user_id, :presence => true, :uniqueness => true
可能,这是代码可维护性的最佳选择,因为它将所有user 约束组合在一起。那为什么反而不一致呢?
【问题讨论】:
标签: ruby-on-rails validation activerecord model