【发布时间】:2012-10-02 01:01:06
【问题描述】:
您想复制旧对象的一些属性并创建具有很少更改属性的新对象。我使用的是 rails 3.0.7 版,因此我无法使用 old_object.dup。我不想使用 old_object.clone 因为它给了我记录的浅表副本,包括复制冻结状态。因此我遵循以下方法
@old_product = Product.find(params[:id])
@product = Product.create(@old_product.attributes.merge({:description => params[:product][:description], :category => params[:product][:box_id], :user_id => current_user.id}))
但它给了我错误用户不能为空。事实上,它也没有存储我的描述和类别。这是正确的方法吗?复制旧对象的属性并更改其中一些属性的任何其他方法。
【问题讨论】:
-
我可以更改类别属性和描述,但无法更改 user_id。即使它没有从 old_product 对象复制 user_id 属性。它显示零值....
-
user_id 字段是否是 Product 模型中的白名单属性,因此您可以批量分配它?
-
Hye Agis 我刚刚回答了我的问题,你说得对,我将它添加到可访问的属性列表中,现在它正在工作,谢谢你的快速回复......
-
从 rails 2.0.0 开始支持 dup 方法。见apidock.com/rails/ActiveResource/Base/dup
标签: ruby-on-rails object activerecord clone