0

モデルの 1 つにネストされた属性を受け入れさせようとしています。モデルの名前は Tournament で、Tournament には多数の MapList があります。また、トーナメントは、少なくとも 1 つの MapList が存在することを検証します。同様に、MapList は tourment_id が存在することを検証します。参考までに、MapList には 3 つの属性しかありません。tourment_id、map_order、および map_id です。トーナメントに表示されているコードは次のとおりです。

accepts_nested_attributes_for :map_lists

私の問題は、新しいトーナメント記録に関するものです。たとえば、次のようなコードを使用して新しいトーナメントを作成したいと考えています。

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

ただし、このコードは機能しません。t をインスタンス化した直後に t.map_lists を呼び出すと、空のリレーションが得られます。明らかに、新しいレコードを作成しているため、tourment_id を設定できません。どうすればこの問題を解決できますか?

4

1 に答える 1

0

attr_assessible は、ネストされた属性からも保護します...そのため、次のように構成する必要があります。

class Tournament
  accepts_nested_attributes_for :map_lists
  attr_assessible :map_lists_attributes #and all your others
end
于 2012-04-16T18:55:11.010 に答える