相关疑难解决方法(0)

在rails中的ActiveRecord对象中跟踪脏的非持久属性

我有一个从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未处理的属性.

activerecord activemodel ruby-on-rails-3

26
推荐指数
1
解决办法
8308
查看次数