繁体   English   中英

Rails validates_uniqueness_of和范围-仅在更新时有效

[英]Rails validates_uniqueness_of and scope - working only on update

我有以下3个课程:

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 ...并且我尝试为模型添加我自己的令牌,我可以用它们来连接它们并通过它进行validates_uniqueness_of (在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM