2011-08-07 2 views
2

내 레일 애플 리케이션에 일대 다 관계 설정이 있습니다 : Person은 다수 Addresses입니다. is_primary 테이블에 Addresses 테이블을 추가했습니다. 유효성 검사를 통해 하나의 주소에만 is_primary이 true로 설정되도록하려면 어떻게 적용 할 수 있습니까? Personaddressable_typeXaddressable_id있는 모든 Addresses 행에 대해, 하나는 trueis_primary 세트를 가질 수 있습니다레일 : 일대 다 관계의 많은 측면에 단 하나의 레코드가 기본으로 플래그가 지정되었는지 확인하는 방법

기본적으로 내가하고 싶은 말. 그렇지 않은 경우 저장을 거부하고 양식 유효성 검사 오류를 발생시킵니다.

답변

0

PersonAddress 사이에 새로운 일대일 연결을 추가하는 것이 더 좋지 않습니까? 그렇게하면 유효성 검사 및 오류 처리를 수행 할 필요없이 기본 주소가 하나만있을 수 있습니다.

class Person 
    belongs_to :primary_address, class_name: 'Address' 
    has_many :addresses 
end 

class Address 
    belongs_to :person 

    def is_primary? 
    self.person.primary_address == self 
    end 
end 
+0

새로운 루비 1.9 구문! 그것은 항상 오랫동안 Rubyist를 혼동합니다 ;-) –

+0

Gah! 멍청한 1.9. 내 의견을 삭제하겠습니다. –

관련 문제