在Rails中复制ActiveRecord,使用现有参数创建新对象

sli*_*ick 3 ruby ruby-on-rails

我正在尝试在我的应用程序中复制Rails中的资源,并遇到了一些问题.

设置是:我有一个用户可以使用的"项目模板"库,然后修改结果项.我目前有这样的设置:

@temp_item = @template_item.dup
@new_item = @user.items.create(@temp_item.attributes)
Run Code Online (Sandbox Code Playgroud)

但是我遇到了一个问题,它也试图复制受保护的属性(即created_at和updated_at).我不想单独列出每个属性,所以我的问题是,有没有办法排除在这个实例中被复制的属性?

谢谢.

Mar*_*ine 7

将Mischa的好建议纳入我的原始答案.

@temp_item_attributes = @template_item.attributes.reject{ |k,v|
  %w(created_at updated_at).include?(k)
}
@new_item = @user.items.create(@temp_item_attributes)
Run Code Online (Sandbox Code Playgroud)