我正在开发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。 有什么想法吗?
答案 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
感谢您的支持和回复。