【发布时间】:2017-04-21 14:23:31
【问题描述】:
我正在尝试将一些最新的收件人(订阅者)复制到我的时事通讯应用中的新类别。我在 Rails 控制台中运行了以下代码行,但没有将收件人复制到新类别,而是将最新的 10 个收件人移动到新类别。看起来recipient.clone 不起作用。我正在使用 Ruby v2.0.0 和 Rails v3.2.11。
recipients = Recipient.where(category_id: 54).order('created_at DESC').take(10)
recipients.each{ |recipient|
@recipient_clone = recipient.clone
@recipient_clone.category_id=63
@recipient_clone.save
}
更新:
我试过了
recipients.each{ |recipient|
recipient.freeze
@recipient_clone = recipient.dup
@recipient_clone = @recipient_clone.category_id=63
@recipient_clone.save
}
但它给出了NoMethodError: private method 'initialize_dup' called 错误。
【问题讨论】:
-
你试过用
recipient.dup代替吗? -
是的,但它给出了
NoMethodError错误 -
正如@Iceman 所说。克隆将保留
id字段,因此当您保存时,您正在更新现有记录。dup更适合您的目的。 -
@Iceman 我在
recipient.dup之前尝试过recipient.freeze,但它引发了相同的NoMethodError
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2