如何在ActiveRecord 3中向单个对象而不是整个类添加前验证回调?
如何在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中,您不能再仅仅在模型中定义方法,而这些方法是以所讨论的回调命名的。
在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
班