5

これは以前に部分的に尋ねられたもので、クラスオブジェクトの属性を一度に設定する方法に関する次のクリップを見つけましたが、一括割り当て保護のため、Rails では不可能です。(たとえば、Object.attributes={} はできません)

あるクラスの属性を別のクラスにマージする良い方法はありますか?

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

ありがとう。

4

1 に答える 1

14

オプションで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)
于 2012-04-11T20:00:36.887 に答える