无法创建相同的 id 另一个模型



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

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

您可以这样做:

item_master_child.id = item_master.id

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

制作新的ItemMaster并仅设置id属性并保存。使用post-params和set-id-attibute创建新的ItemMasterChild并保存。然后,通过发布附件来更新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

感谢您的支持和回复。

相关内容

最新更新