我有模型Gateway
,GatewayType
我正在寻找
Gateway.<gateway_type.name> # => Gateway.where(:gateway_type_id => gateway_type.id)
现在这个<gateway_type.name>
范围应该在运行时创建,类似于在运行时使用如下定义的方法添加类/实例级别的方法
class Object
def metaclass
class << self
self
end
end
end
# adding class level methods
GatewayType.all.each do |type|
# adding methods to Gateway
Gateway.metaclass.class_eval do
define_method "all_#{type.name}" do
Gateway.where(:gateway_type_id => type.id)
end
end
end
我不想采用上述方法,因为它不允许我添加all_xyzs
介于两者之间where
或其他范围之类的
Gateway.scope1.all_xyzs.scope2
那么......有什么方法可以scope
在运行时定义吗?