我有一个从 ActiveRecord 继承的对象,但它有一个未保存在数据库中的属性,例如:
class Foo < ActiveRecord::Base
attr_accessor :bar
end
我希望能够使用 ActiveModel Dirty 提供的“bar_changed?”等方法跟踪对“bar”的更改。问题是,当我尝试在此对象上实现 Dirty 时,如文档中所述,我收到错误,因为 ActiveRecord 和 ActiveModel 都已定义define_attribute_methods
,但参数数量不同,因此尝试时出现错误调用define_attribute_methods [:bar]
.
我在 includedefine_attribute_methods
之前尝试过别名ActiveModel::Dirty
,但没有运气:我得到一个未定义的方法错误。
关于如何处理这个问题的任何想法?当然,我可以手动编写所需的方法,但我想知道是否可以通过将 ActiveModel 功能扩展到 ActiveRecord 未处理的属性来使用 Rails 模块。