named_scopeの引数による条件分岐
named_scopeに引数を渡した場合、その型によって設定するSQLを動的に変更したいことがある。 こういうときにはlambdaに渡しているのブロック中で条件分岐すれば良い。
named_scope :member, lambda { |m|
case m
when Member
{ :conditions => { :member_id => m.id } }
when Integer
{ :conditions => { :member_id => m } }
else
{}
end
}
要するに、lambdaに渡したブロックの処理の結果、findに渡すHashパラメータが返ればそれでok、という感じなんじゃないかと。