0

我正在开发 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_master 参数变成了 id: 654, style: 0, icon :0。除 id 之外的所有参数都变为 0。有什么想法吗?

4

3 回答 3

0

你可以这样做:

item_master_child.id = item_master.id
于 2012-07-30T12:08:22.023 回答
0

AFAIK Rails 不允许您将内容分配给数据库对象的 id 字段。如果您需要以某种方式连接它们,则添加具有“has_one”关系的外键,或belongs_to

于 2012-07-30T12:21:39.503 回答
0

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

制作新的 ItemMaster 并仅设置 id 属性并保存。使用 post 参数创建新的 ItemMasterChild 并设置 id 属性并保存。然后,通过 post 属性更新 ItemMaster 属性,这工作正常。

更新属性应该在保存 item_master_child 之后。如果放在item_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

感谢大家的支持和回复。

于 2012-07-31T02:08:18.623 回答