之前已经部分询问过,我发现了以下clip关于如何一次性设置类对象的属性,但由于质量分配保护,Rails不可能。 (例如,你不能Object.attributes = {})
有没有一种方法可以将属性从一个类合并到另一个类?
object1.attributes = object2.attributes.inject({}){ |h,(k,v)|
h[k]=v if ObjectModel.column_names.include?(k); h
}
感谢。
答案 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)