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」カラムを追加する方がよろしいでしょうか。

よろしくお願い致します。