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

时间:2012-07-30 11:51:36

标签: 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_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。 有什么想法吗?

3 个答案:

答案 0 :(得分:0)

你可以这样做:

item_master_child.id = item_master.id

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

更新attibutes应该在保存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

感谢您的支持和回复。