注意:我知道我在这里所做的可能很愚蠢,但我什至不一定会使用这段代码,我现在只是好奇。
如果类中缺少特定方法,我正在尝试向类动态添加一个空的 Rails 范围
该文档特别似乎表明这应该是可能的:https ://api.rubyonrails.org/classes/ActiveSupport/Concern.html
module Mod
extend ActiveSupport::Concern
class_methods do
def method_missing(m, *args, &block)
if m.match? /method/
klass = class << self; self; end
klass.class_eval { scope :method, -> {} }
end
end
end
end
klass 已正确设置为此处的类,但是尝试评估作用域的创建失败,undefined method 'scope' for #<Class:0x0000560e35d2eb48>
但是当我调用时,klass.ancestors
我可以确认 klass 是继承自ActiveRecord::Base
并且应该具有作用域。
任何想法为什么我不能class_eval
scope
在这里