在两个ActiveRecord类之间合并/复制属性的好方法?

时间:2012-04-11 19:53:19

标签: ruby ruby-on-rails-3

之前已经部分询问过,我发现了以下clip关于如何一次性设置类对象的属性,但由于质量分配保护,Rails不可能。 (例如,你不能Object.attributes = {})

有没有一种方法可以将属性从一个类合并到另一个类?

object1.attributes = object2.attributes.inject({}){ |h,(k,v)|
  h[k]=v if ObjectModel.column_names.include?(k); h
}

感谢。

1 个答案:

答案 0 :(得分:12)

assign_attributes:without_protection选项一起使用。

attributes = object2.attributes.select do |attr, value|
  ObjectModel.column_names.include?(attr.to_s)
end
object1.assign_attributes(attributes, :without_protection => true)