如何在使用dup.update_attributes()时获取id

时间:2013-09-19 20:54:08

标签: ruby-on-rails ruby-on-rails-3

p = product.dup.update_attributes(name: "The latest thing")

上面的代码创建(并保存)product对象的副本,其中一个属性已更改。

如何检索新创建记录的ID?变量p仅返回true

2 个答案:

答案 0 :(得分:2)

这里的问题是p等于返回update_attributes(如果更新成功则为true,否则为false)

你应该这样做:

product_copy = product.dup # copies the product into a new one, stocked in variable product_copy
product_copy.update_attributes(name: "The latest thing")
product_copy # => your Product object

替代方案:

product_copy = product.dup
product_copy.name = "The latest thing"
product_copy.save

答案 1 :(得分:1)

它返回true,因为update_attributes是最后一个被评估的方法。因此,为p分配了update_attributes方法的值,该方法可以是truefalse

p = product.dup
p.update_attributes(name: "The latest thing")
p.id