Tin*_*n81 4 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
在我的 Rails 应用程序中,我有一个方法可以复制invoice
包含其items
.
class Invoice < ActiveRecord::Base
def duplicate
dup.tap do |new_invoice|
new_invoice.date = Date.today
new_invoice.number = nil <<<--------------
items.each do |item|
new_invoice.items.push item.dup
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
现在我想要的是根本不复制该属性,因此可以在我的操作中生成一个新属性(为了简洁起见,我没有在此处显示)。number
number
new
现在,我将其设置为nil
不是我想要的。
有任何想法吗 ?
也许是这样的:
def duplicate
new_invoice = Invoice.new(attributes.except("id", "number"))
items.each do |item|
new_invoice.items.push item.dup
end
new_invoice
end
Run Code Online (Sandbox Code Playgroud)
或者,如果您需要绕过受保护的属性等,则可以循环遍历属性。但是self.attributes
使用Hash#except可能就是您想要的。
归档时间: |
|
查看次数: |
6143 次 |
最近记录: |