Ruby on rails 在创建新记录时,如何使用接受\u嵌套的\u属性\u?

Ruby on rails 在创建新记录时,如何使用接受\u嵌套的\u属性\u?,ruby-on-rails,ruby-on-rails-3,nested-attributes,Ruby On Rails,Ruby On Rails 3,Nested Attributes,我正在尝试让我的一个模型接受嵌套属性。该模型的名称为锦标赛,锦标赛有许多地图列表。另外值得注意的是,锦标赛验证至少存在一个地图列表。同样,映射列表验证是否存在该id。作为参考,MapList只有3个属性:锦标赛id、地图顺序和地图id。代码与锦标赛中显示的代码完全相同,如下所示: accepts_nested_attributes_for :map_lists 我的问题是关于新的比赛记录。例如,我想使用以下代码创建一个新的锦标赛: t = Tournament.new({map_lists_a

我正在尝试让我的一个模型接受嵌套属性。该模型的名称为锦标赛,锦标赛有许多地图列表。另外值得注意的是,锦标赛验证至少存在一个地图列表。同样,映射列表验证是否存在该id。作为参考,MapList只有3个属性:锦标赛id、地图顺序和地图id。代码与锦标赛中显示的代码完全相同,如下所示:

accepts_nested_attributes_for :map_lists
我的问题是关于新的比赛记录。例如,我想使用以下代码创建一个新的锦标赛:

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

但是,此代码不起作用。如果在实例化t之后立即调用t.map_列表,则会得到一个空关系。显然,我无法设置锦标赛id,因为我正在创造一项新记录。我怎样才能解决这个问题

attr\u assessible也可以保护嵌套属性。。。因此,您需要进行如下配置:

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

你们有任何可访问的比赛设置吗?我有。我需要将地图列表添加到可访问列表中吗?酷,我刚刚添加了一个关于如何处理此问题的答案OK,这让我更接近了。现在,正在创建新的地图列表,但在保存时仍然存在问题。地图列表中的锦标赛id似乎未设置,因此地图列表保存失败。我只想补充一点,我认为问题在于锦标赛验证存在一个地图顺序为1的地图列表。