0

私はこれらの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

これvalidates_uniqueness_ofは、彼に関連付けられた ProfileSubject のコレクションを使用してプロファイルを更新すると、うまく機能します。ただし、作成アクションでは、この一意性は検証されません。おそらくこれは、オブジェクトを作成するときにまだ profile_id を持っていないためだと思いました...そして、モデルに独自のトークンを追加しようとしました。これは、それらを接続して検証するために使用できます(スコープで使用しますvalidates_uniqueness_of)。私が今知っている広告は、役に立たず、機能していませんでした。

助けていただけませんか...この標準の検証が更新アクションでは正常に機能するのはなぜですか..しかし、作成アクションでは機能しません。

作成コードは標準で、次のようになります。

    @profile = Profile.new(profile_params)

    if @profile.save
      # ...
    else
      # ...
    end
4

1 に答える 1

-1

使用する:

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

それ以外の:

validates_uniqueness_of :subject_id, scope: :profile_id
于 2015-08-30T10:59:14.693 に答える