2012-04-16 2 views
0

내 모델 중 하나에 중첩 된 특성을 허용하려고합니다. 이 모델의 이름은 Tournament이며, Tournament에는 많은 MapLists가 있습니다. 또한 주목할만한 점은 토너먼트가 적어도 하나의 MapList가 존재하는지 확인하는 것입니다. 마찬가지로 MapList는 tournament_id가 있는지 확인합니다. 참조 용으로 MapList에는 tournament_id, map_order 및 map_id의 3 가지 속성 만 있습니다. 토너먼트에 표시된 코드는 다음과 같습니다.새 레코드를 만들 때 accepts_nested_attributes_for를 어떻게 사용합니까?

accepts_nested_attributes_for :map_lists 

내 토너먼트 기록과 관련된 문제가 있습니다. 예를 들어 다음과 같은 코드를 사용하여 새로운 토너먼트를 만들고 싶습니다.

t = Tournament.new({map_lists_attributes: [{map_id: 1, map_order: 1}]}, as: :admin) 

이 코드는 작동하지 않습니다. t를 인스턴스화 한 직후에 t.map_lists를 호출하면 빈 관계가 생깁니다. 분명히, 나는 새로운 레코드를 만들고 있기 때문에 tournament_id를 설정할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

당신이 대회에 대한 attr_accessible 설정이 있습니까? –

+0

나는 그렇다. 접근 가능한 목록에 map_list를 추가해야합니까? – Max

+0

멋지다, 방금이 일을 어떻게해야하는지에 대한 답변을 추가했습니다. –

답변

0

attr_assessible이 방지됩니다 중첩 된 속성을 당신과 같이 구성해야합니다 ... 그래서뿐만 아니라 :

class Tournament 
    accepts_nested_attributes_for :map_lists 
    attr_assessible :map_lists_attributes #and all your others 
end 
+0

좋아요. 이제 새로운 MapLists가 생성되고 있지만 여전히 저장에 문제가 있습니다. MapLists의 tournament_id가 설정되지 않는 것처럼 보이므로 MapList 저장이 실패합니다. – Max

+0

나는이 문제점이 Tournament가 map_order 1이있는 map_list가 유효한지 확인한다는 사실에서 비롯된 것이라고 생각한다. – Max

관련 문제