这里的交互有点复杂,所以请耐心等待。我正在与 Spree 合作。Spree 在其一些模型中使用了 delegate_belongs_to,包括“Spree::Variant”。'delegate_belongs_to :product, :available_on (...)' 在原始类主体中被调用。
我希望变体能够有自己的 available_on 日期。delegate_belongs_to 像这样注入自己:
module DelegateBelongsTo
extend ActiveSupport::Concern
module ClassMethods
#...
def delegate_belongs_to(association, *attrs)
#...
end
end
end
ActiveRecord::Base.send :include, DelegateBelongsTo
我不希望重写整个变体类来删除这个参数。这是我最近的尝试之一:
Spree::Variant.class_eval do
class << self
alias_method :original_dbt, :delegate_belongs_to
def delegate_belongs_to(association, *attrs)
attrs.delete [:available_on]
original_dbt(association, attrs)
end
end
attr_accessible :available_on
#...
end
我已经尝试了许多变体。我不确定是不是因为它在 class_eval 中,如果执行顺序有问题,或者什么,但我似乎无法覆盖这个方法。我在这里不明白什么?
谢谢。