如何在ActiveRecord 3中向单个对象而不是整个类添加前验证回调?

如何在ActiveRecord 3中向单个对象而不是整个类添加前验证回调?,activerecord,ruby-on-rails-3,Activerecord,Ruby On Rails 3,如何在ActiveRecord 3中将“验证前回调”添加到单个对象,而不是整个类? 在AR 2中,我喜欢这样: module ObjExtend def before_validation p 'before_validation' return super end end obj.extend ObjExtend 但是它不再工作了,这是因为在rails3中,您不能再仅仅在模型中定义方法,而这些方法是以所讨论的回调命名的。

如何在ActiveRecord 3中将“验证前回调”添加到单个对象,而不是整个类?
在AR 2中,我喜欢这样:

module ObjExtend  
    def before_validation  
        p 'before_validation'  
        return super  
    end  
end  
obj.extend ObjExtend

但是它不再工作了,这是因为在rails3中,您不能再仅仅在模型中定义方法,而这些方法是以所讨论的回调命名的。在验证之前,您必须使用
声明它们:foo
或您拥有的东西(:foo指模型类的实例方法,但您也可以传入proc或类)

所以。。这不是理想的解决方案,但它应该会给您一些想法:

obj = MyModel.first
class << obj
  before_validation :foo
  def foo
    p 'before_validation'
    return super
  end
end
obj=MyModel.first
班