1
에 방법을 위임 : 팀 여러 선수를 가질 수는 유효성 내가 세 가지 모델 다음 한 레일
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
하고, 플레이어는 여러 팀에 속할 수 있습니다. 그러나 팀은 위치가 '키커'인 플레이어를 한 명만 가질 수 있습니다.
어떻게이 고유 한 유효성 검사를 만들 수 있습니까?
validates :position, :uniqueness => { :scope => {:team_id} }
그러나 검증하는 동안
는 레일은TeamsPlayer
데이터베이스 테이블에
type
열을 확인하는 쿼리를 실행합니다
나는이 같은
TeamsPlayer
에 유효성 검사를 추가했습니다. 대신 위임 된 메서드임을 확인하고 대신
Player
데이터베이스 테이블에서 확인합니다.
왜'Team'에있을 것이 아니라'TeamsPlayer'에 custom validation입니까? 내가 '팀'에 올린다면, 내가 원하는만큼 같은 위치에 많은 선수를 추가 할 수 없을까? 나는 단지'TeamsPlayer' 객체를 생성하기위한 폼을 노출합니다. – Brian
X와 같은 제약 조건을 검증 할 때 하나의 Y 만 가질 수 있다면, X에 검증을 넣으므로'Team'에 유효성 확인을 두어'has' 제로 또는 하나의 키커. 나는 당신이'TeamsPlayer'에 대한 검증을 할 수 있다고 생각합니다. 결코 시도하지 않았습니다. –
저는 자신의 컨트롤러를 사용하여 조인 모델을 생성/편집/파괴하고 있습니다. 따라서 X에서 유효성 검사를 수행 할 수 있다고 생각지 않습니다. X를 수정하려고 시도했을 때만 실행될 것이라고 생각합니다. – Brian