2011-12-02 2 views
0

나는 조잉 테이블 (bowsers_profiles)이있는 두 개의 모델을 가지고 있습니다. (HABTM) 즉.레일 HABTM 체크 박스 유효성 확인

model Profile 
    has_and_belongs_to_many :browsers 
end 

model Browser 
    has_and_belongs_to_many :profiles 
end 

프로필 저장시 사용자는 어떤 브라우저를 사용할 지 선택할 수 있습니다. 사용자가 적어도 하나의 브라우저를 선택해야하도록 어떻게 검증 할 수 있습니까? 검증은 프로파일에 속할 것인가? 그럴 것 같아요?

누구나이를 달성 할 수있는 방법을 밝힐 수 있습니까?

감사합니다.

+0

해결책을 찾았습니까? – Preacher

+0

하이 설교가. 당신이 제안한대로 작동하지 않았습니다. – Lee

답변

0

, 결국

def must_have_at_least_one_browser 
    errors.add(:base, 'You must select at least one browser') unless browser_ids.count > 0 
    end 

간단한 솔루션 .

0

관계를 선택하는 작업이 포함 된 컨트롤러에 해당하는 모델에 넣을 것입니다. 예를 들어, profile#new 및/또는 profile#edit 작업에서 브라우저를 선택하면 유효성 검사 모델을 프로파일 모델에 넣습니다. 여기

는 프로필 모델에 넣어 경우 코드입니다 : 내가 할 필요가 모든 HABTM 필드, 즉의 배열 요소 계산했다

validate :must_have_at_least_one_browser 

private 

    def must_have_at_least_one_browser 
    if browsers.blank? 
     errors.add(:base, 'You must select at least one browser') 
    end 
    end