Ruby on rails 使用dup.update_attributes()时如何获取id

Ruby on rails 使用dup.update_attributes()时如何获取id,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,上面的代码创建(并保存)产品对象的副本,其中一个属性被更改 如何检索新创建记录的id?变量p仅返回true它返回true,因为update\u attributes是最后一个得到评估的方法。因此p被分配update\u attributes方法的值,该方法将是true或false p = product.dup.update_attributes(name: "The latest thing") 这里的问题是p等于返回update_属性的值(如果更新成功则为true,否则为false) 您应

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


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

它返回
true
,因为
update\u attributes
是最后一个得到评估的方法。因此
p
被分配
update\u attributes
方法的值,该方法将是
true
false

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

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

您应该这样做:

p = product.dup
p.update_attributes(name: "The latest thing")
p.id
另一种选择:

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