在干燥我的Rails应用程序代码的过程中,我创建了以下用于生成索引方法内容的问题。
define_method(:generate_index) do |string, scope|
instance_variable_set( "@#{string}", string.camelize.constantize.public_send(scope))
end
我使用此代码生成如下内容:
def index
generate_index("foo", "all")
# @foo = Foo.all
end
我想要做的是让define方法接受许多范围。我尝试传入一组范围,但这会导致错误。
有什么想法吗?
由于
答案 0 :(得分:1)
您可以使用启动*
运算符:
define_method(:generate_index) do |klass, *scopes|
scope = klass.to_s.camelize.constantize
scopes.each { |s| scope = scope.send(s) }
instance_variable_set("@#{string}", scope)
end
def index
generate_index(:foo, :all, :where_not_test)
# @foo = Foo.all.where_not_test
end