2012-04-16 9 views
0

私のモデルの1つにネストされた属性を受け入れようとしています。モデルの名前はTournamentで、Tournamentには多くのMapListsがあります。注目すべき点は、トーナメントが少なくとも1つの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_listsを追加する必要がありますか? – Max

+0

クール、私はこのために何をすべきかについての答えを追加しました –

答えて

0

attr_assessibleは、同様に、ネストされたアトリビュート...ので、あなたがそうのように設定する必要がありますから保護します:

​​
+0

これは私を近づけています。今、新しいMapListsが作成されていますが、私はまだ保存に関する問題があります。 MapListsのtournament_idが設定されていないように見えるので、MapListの保存に失敗しています。 – Max

+0

私はトーナメントがmap_order 1でmap_listが存在することを検証するという事実から問題が発生したと考えています。 – Max

関連する問題