ActiveRecord から継承するオブジェクトがありますが、次のように DB に永続化されていない属性があります。
class Foo < ActiveRecord::Base
attr_accessor :bar
end
ActiveModel Dirty が提供するように、「bar_changed?」などのメソッドを使用して、「bar」への変更を追跡できるようにしたいと考えています。問題は、 docsで説明されているように、このオブジェクトに Dirty を実装しようとすると、 ActiveRecord と ActiveModel の両方が定義されているdefine_attribute_methods
ためエラーが発生しますが、パラメーターの数が異なるため、試行時にエラーが発生することですを呼び出すdefine_attribute_methods [:bar]
。
define_attribute_methods
を含める前にエイリアシングを試みActiveModel::Dirty
ましたが、うまくいきませんでした: メソッドが定義されていないというエラーが発生します。
これに対処する方法についてのアイデアはありますか?もちろん、必要なメソッドを手動で記述することもできますが、Rails モジュールを使用して、ActiveModel の機能を ActiveRecord で処理されない属性に拡張することで、それが可能になるかどうか疑問に思っていました。