【发布时间】:2019-09-15 05:05:52
【问题描述】:
我想使用字符串数组动态定义方法。
这里有一段简单的代码可以实现这一点。
class SomeClass
attr_accessor :my_array
def initialize(user, record)
@my_array=[]
end
my_array.each do |element|
alias_method "#{element}?".to_sym, :awesome_method
end
def awesome_method
puts 'awesome'
end
end
当我在控制台中实例化这个类时,我得到以下错误
NoMethodError(nil:NilClass 的未定义方法 `each')
这段代码有什么问题以及如何使它工作。任何帮助都非常感谢:)
编辑 1: 我最终想要实现的是从 SomeClass 继承并覆盖子类中的 my_array 以动态定义具有如下属性的方法
class OtherClass < SomeClass
my_array = %w[method1 method2 method3]
# Some mechanism to over write my_array.
end
然后使用self.inherited在子类中动态定义方法。
有没有什么好的方法可以做到这一点?
【问题讨论】:
-
你从类作用域调用
my_array,而它是在实例作用域上定义的。
标签: ruby-on-rails ruby ruby-on-rails-5