【发布时间】:2017-02-08 14:29:14
【问题描述】:
我的模型中有一个类写在供应商的代码中(我无法修改),它附有Proc。考虑一个衬衫类的示例,代码如下所示。
class Shirt < ActiveRecord::Base
before_validation -> { self.size ||= 'medium' }
# Some code here
end
(注意这段代码是设置默认衬衫尺寸)
说,我现在需要在装饰器类中将默认衬衫尺寸更改为大。代码看起来像
Shirt.class_eval do
before_validation -> { self.size ||= 'large' }
# Some more code
end
但是,默认衬衫尺寸仍设置为medium,因为仍会调用原始类中的before_validation 回调。
有没有一种优雅的方法来移除原始代码中的回调并改用 class_eval 验证?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 activemodel activesupport