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