2014-04-24 2 views
0

을 통해 많은있다. 말하자면 두 명은 그들과 관련된 Cs의 정확한 세트를 가질 수 있습니다. 이 A가 존재하는 경우 , 나는이에 고유 제한 조건을 가질 수있는 방법을 나는 다음과 같은 한 협회

A.first.cs.pluck(:key) => ['c1', 'c2'] 

는 다른 (A)는 제 1A까지 할당 [ 'C1', C2 '는'] 삭제 또는 업데이트 될 수 없다.

나는이 방법을 생각 할 수 있지만 레일의 방법이있다 :

1) 각 A 객체에 관련된 모든 Cs의 문자열을 보유하고 'CS'열을 첨가 A 테이블을 비정규은 다음 넣어 새 'cs'열에 대한 제약 조건.

2) 실체화 모든 As을 기존 및 새로운 a

가장 큰 문제로 각을 비교하는 것은 a.cs를 채울 수 없습니다 a = A.create(bs_attributes:[{cs_attributes:{...}},{cs_attributes:{...}}])로 nested_attributes_for를 사용하여 동시에 AsBsCs 만들기가 a를 생성 할 때까지이다 그 당시 유효성 확인을 위해 콜백을 수행하기에는 너무 늦었습니다.

답변

1

B에, 당신은 당신 만 제안하는 것은 어떤 C는 연관되지 않은 것을 확인합니다

validates :c_id, :uniqueness => { :scope => :a_id } 
+0

을 할 수있는 이상의 A.first.cs.pluck 번 (: 키) => [ 'C1' , 'c1']은 유효하지 않습니다. 나는 어떤 A가 연관되어있는 cs에 유효성 검증이 있어야한다는 것을 명확히하기 위해 질문을 갱신 할 것이다. 감사 :) – robertoplancarte