Rails validates_uniqueness_of和scope -仅在更新时工作



我有这三个类:

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

当我用profilessubject的相关集合更新我的配置文件时,这个validates_uniqueness_of工作得很好。但是,在创建操作上,它没有验证这种唯一性。我想,也许这是因为当我创建对象时,我还没有profile_id…我尝试为模型添加我自己的令牌,我可以用它来连接它们并通过它进行验证(在validates_uniqueness_of的范围上使用它)。我现在知道了,它没有用,也不起作用。

你能帮我……

创建代码是标准的,像这样:

    @profile = Profile.new(profile_params)
    if @profile.save
      # ...
    else
      # ...
    end

使用说明:

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

代替:

validates_uniqueness_of :subject_id, scope: :profile_id

相关内容

  • 没有找到相关文章

最新更新