モデルのvalidation時に、関連のある別モデルも参照するやり方
Ruby on Railsのモデルにおけるvalidationを実装したいと考えています。
下記のApplicant
モデルの保存時に、Applicant
モデルと関連するTarget
モデル内のカラムも参照して重複排除したいと考えています。
1つのモデル内であれば、scopeを用いることで複数のカラムを参照した重複排除は可能だと思いますが、別モデルの値も参照した重複排除にするにはどうするのが良いか、伺えればと思います。
下記詳細となります。
モデルの構成
[Event] --1:多-- [Target] --1:多-- [Applicant] --多:1-- [User]
モデル:Applicant
class Applicant < ActiveRecord::Base
belongs_to :target
belongs_to :user
has_one :event, through: :target
# ここで、Applicantのカラム「user_id」とTargetのカラム「event_id」で
# 重複をチエックしたいと考えています。
end
Applicantモデルのカラム:user_id,target_id,name等
モデル:Target
class Target < ActiveRecord::Base
belongs_to :event
has_many :applicants
end
Targetモデルのカラム:event_id,name等
モデル:Event
class Event < ActiveRecord::Base
has_many :targets
has_many :applicants, through: :targets
end
Eventモデルのカラム:name等
もしくは、上記のようなものを実装したいのであれば、
Applicant
モデルに「event_id」カラムを追加する方がよろしいでしょうか。
よろしくお願い致します。