モデルGateway
とがありGatewayType
、探しているのは
Gateway.<gateway_type.name> # => Gateway.where(:gateway_type_id => gateway_type.id)
<gateway_type.name>
以下のように defined_method を使用して実行時にクラス/インスタンスレベルのメソッドを追加するのと同様に、このスコープは実行時に作成されます。
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
実行時に定義する方法はありますか?