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