Rails validates_uniqueness_of和范围 - 仅适用于更新

时间:2015-08-30 10:04:56

标签: ruby-on-rails validation validates-uniqueness-of

我有这三个班级:

class Profile < ActiveRecord::Base  
end

class Subject < ActiveRecord::Base
end

class ProfileSubject < ActiveRecord::Base
  belongs_to :profile
  belongs_to :subject

  validates_uniqueness_of :subject_id, scope: :profile_id
end

当我用他关联的ProfileSubject集合更新我的个人资料时,这个validates_uniqueness_of很有用。但是,在创建动作时 - 它没有验证这种独特性。我想,也许这是因为当我创建对象时我还没有profile_id ...我尝试为模型添加我自己的令牌,我可以使用它来连接它们并通过它进行验证(在{{1的范围内使用它}})。我现在知道的广告,它没用,也没用。

你能帮助我......为什么这个标准验证在更新操作上正常工作......但是对于创建操作不起作用。

创建代码是标准的,如下所示:

validates_uniqueness_of

1 个答案:

答案 0 :(得分:0)

使用:

validates_associated :subject, :profile
validates :subject, :profile, :presence => true

代替:

validates_uniqueness_of :subject_id, scope: :profile_id