ActiveModel :: Dirtyは、Array.push(または、最近読んだことのある他の修正方法)をカバーしていないpostgres配列は、prettyが確立されています。たとえば、AppleモデルにApple.seedsという配列がある場合、Railsコンソールでは次のように表示されます。attribute =とArray.pushの両方からの変更ログ
johnny = Apple.new()
# => <Apple #blahblahblah>
johnny.seeds
# => [] (assuming [] default)
johnny.seeds << "Oblong"
# => ["Oblong"]
johnny.changed?
# => false
johnny.seeds = []
johnny.seeds += ["Oblong"]
# => ["Oblong"]
johnny.changed?
# => true
だから、配列属性を変更する2つの異なる方法を使用することができますが、Railsは唯一のセッターを使用するものを認識しています。私の質問は、johnny.seeds << (x)
がjohnny.changes
に反映されるように、ActiveRecordオブジェクトのコンテキストでセッターのように振るようにプッシュを取得する方法(Arrayクラスをマングルしない)ですか?
(私の側では、これは無意識のうちに、彼らはこの制限を認識していなかったので、変更を記録するために失敗し、アレイの属性にプッシュを使用することから、将来の開発を防ぐためです。)