我正在尝试在我的应用程序中复制Rails中的资源,并遇到了一些问题。
设置是:我有一个用户可以使用的“项目模板”库,然后修改结果项。我目前有这样的设置:
@temp_item = @template_item.dup
@new_item = @user.items.create(@temp_item.attributes)
然而,我遇到了一个问题,即它试图复制受保护的属性(即created_at和updated_at)。我不想单独列出每个属性,所以我的问题是,是否有办法排除在此实例中复制的属性?
感谢。
答案 0 :(得分: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)
答案 1 :(得分:4)
我同意Mark使用reject
,但不是使用case
/ when
,而是执行此操作:
@template_item.attributes.reject{ |k,v| %w(created_at updated_at).include?(k) }
答案 2 :(得分:2)
temp_item_attributes = @template_item.attributes.reject do |k,v|
%w(created_at updated_at).include?(k)
end
@new_item = @user.items.create(temp_item_attributes)
我无法相信这种行为没有方便的方法;我看起来并不太难,但没找到一个。