スコープを持つ次の User オブジェクトがあります。
Class User < ActiveRecord::Base
...
scope :vendors, lambda { where(:user_type => 'v') }
scope :customers, lambda { where(:user_type => 'c') }
...
inactive
ベンダーと顧客で異なる動作をする新しいスコープを作成したい(例: 疑似コード)
scope :inactive, lambda {
if (:user_type => 'v')
where(some_condition_only_for_vendors)
elsif (:user_type => 'c')
where(different_condition_only_for_customers)
else
where(another_condition)
end
}
このようにして、users.vendors.inactive
ある一連の条件に基づいてすべての非アクティブなベンダーをusers.customers.inactive
取得し、別のセットに基づいてすべての非アクティブな顧客を取得するようなことができます。
これは可能ですか、それとももっと良い方法がありますか? ここには多くのレガシー コードがあるため、継承の実装は実行できない可能性があることに注意してください。
ありがとう!