【发布时间】:2018-04-07 21:29:01
【问题描述】:
我有一个名为 Run 的 AR 对象,它保存运行开始、结束、禁用等时间的信息。我正在尝试创建一个类 Something 并希望使其“可运行”。所以我创建了一个名为Runnable 的模块,它在初始化时接收一个运行对象。现在说我把这个模块混入一个类Something。我希望 something 对象将 run 上定义的所有方法委托给 run 对象。
module Runnable
def initialize(run)
@run = run
end
def self.method_missing(name, *args)
super unless @run.respond_to?(name)
@run.send(name, args)
end
end
class Something
include Runnable
end
现在如果我这样做:
run = Run.find(123)
run.start_date # works!
something = Something.new(run)
something.start_date # NoMethodError: undefined method `start_date' for #<Something:0x007fb4a276b0c0>
知道我错过了什么吗?有没有更好的方法来做我想做的事情?
【问题讨论】:
标签: ruby-on-rails ruby rails-activerecord metaprogramming