動的条件のWhere句を少しきれいに作るwith Ez Where Two

そもそもこのプラグインどのくらい使われているのかわからないけれど、

フォームから動的条件で検索をかけるというケースは普通にあるはずで。

で、ばか正直に書いていると作るあたりはこんな風になっている。


cond = Condition.new :articles do
if params[:article][:id]
id == params[:article][:id]
end
if params[:article][:subject]
subject == params[:article][:subject]
end
end
で、さすがに1つ2つ程度ならまだしも、実際には現在13項目あったわけです。

さすがになんとかしたい。rhtmlのパラメータ名称とテーブルのカラム名

一致していることが条件になるが、こんな風に突っ込めばとりあえずANDで

ひっつけていくことは可能になる。


cond = Condition.new
params[:article].each{|key, value| cond << "#{key} = #{value}" if value.empty?}
とりあえずこの例でいうArticleテーブルの構成が変わってもここはそのまま

で対応出来るし、表示項目のrhtmlとの流れさえ意識しておけば一応これで

AND検索に関してはいけるだろう。ORを含めたらどうなるってのはそれぞれの

項目で何を選ばれたかによってメソッドを変更する必要がある。これは

さすがにワンライナーでは書けそうにない気がするけど、要望があれば対応しよう。


  generated by feedpath Rabbit