Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Can';不要在另一个模型中创建相同的id_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Can';不要在另一个模型中创建相同的id

Ruby on rails Can';不要在另一个模型中创建相同的id,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在开发Ruby 1.8.7和Rails 2.3.8。 我试图在一个动作中创建相同的id和另一个模型 def create id = params[:id] item_master = ItemMaster.new(params[:item_master) item_master.id = id item_master.save item_master_child = ItemMaster.new(params[:item_master_child]) item_mas

我正在开发Ruby 1.8.7和Rails 2.3.8。 我试图在一个动作中创建相同的id和另一个模型

def create
  id = params[:id]
  item_master = ItemMaster.new(params[:item_master)
  item_master.id = id
  item_master.save
  item_master_child = ItemMaster.new(params[:item_master_child])
  item_master_child.id = id
  item_master_child.save
  p item_master
  # => ItemMaster id: 654, style: 6, icon: 7
  p item_master_child
  # => ItemMasterChild id: 654, sub_style: 4, roll: 5
end
似乎保存成功完成,但实际上item_主参数变为id:654、样式:0、图标:0。除id之外的所有参数都变为0。 有什么想法吗?

你可以这样做:

item_master_child.id = item_master.id

AFAIKRails不允许将内容分配给数据库对象的id字段。
如果您需要以某种方式连接它们,那么添加一个具有“has_one”关系的外键,或者属于

问题是无法批量分配ID属性,因为它是受保护的属性。 我已经这样解决了

创建新ItemMaster并仅设置id属性并保存。 使用post参数创建新的ItemMasterChild,并设置id attibute和save。 然后,通过post Attributes更新ItemMaster attibutes,这很好

更新属性应在保存项目\u主项\u子项之后进行。 如果将其放在项目_master.save之后,则属性设置为0。 我不知道为什么

def create
  id = params[:id]
  item_master = ItemMaster.new
  item_master.id = id
  item_master.save
  item_master_child = ItemMaster.new(params[:item_master_child])
  item_master_child.id = id
  item_master_child.save
  item_master.update_attributes(params[:item_master])
end

感谢您的支持和回复。

好的,您应该检查服务器日志上的参数散列。可能参数没有按预期传递。请查看
日志/development.log
以查看数据库级别上发生的情况!请接受解决您问题的答案(特别是您之前提出的问题),以保持我们的社区健康。有关更多信息,请参阅。由于您手动设置了id,上面没有说明保存是否成功。您需要检查
save
调用的返回值或使用
save抱歉,这不会进行任何更改。