1

私は次の3つのモデルを持っています:

class Team < ActiveRecord::Model
  has_many :teams_players
  has_many :players, :through => :teams_players
end

class TeamsPlayer < ActiveRecord::Model
  belongs_to :team
  belongs_to :player

  delegate :position, :to => :player
end

class Player < ActiveRecord::Model
  has_many :teams_players
  has_many :teams, :through => :teams_players

  # the database attribute 'position' exists on Player
end

チームには複数のプレーヤーを含めることができ、プレーヤーは複数のチームに所属できます。ただし、チームは「キッカー」のポジションを持つプレーヤーを 1 人しか持てません。

この独自の検証を作成するにはどうすればよいですか?

私はこのように検証を追加しようとしましたTeamsPlayer:

validates :position, :uniqueness => { :scope => {:team_id} }

しかし、検証中、Railsはデータベース テーブルのtype列をチェックするクエリを実行します。TeamsPlayer代わりに、それが委任されたメソッドであることを認識し、Player代わりにデータベース テーブルでチェックするようにします。

4

1 に答える 1

0

これは の検証ではなく、Playerカスタム検証ですTeam

于 2013-06-03T02:43:21.337 に答える