普通の条件なら
cond[:パラメータ] = params[:パラメータ]
でぽんぽん追加してあげればいいんだけど、配列でやりたい条件もあった。
そんな時はこれ。
ActiveRecord Query Building with Multiple and Optional Conditions
こんな感じでやりました。案外簡単にできるもんですね。
def create_cond_from_params(params)
cond = []
args = {}
#p1は指定したい
if !params[:p1].blank?
cond << "p1 = :p1"
args[:p1] = params[:p1]
end
# p2、あるかな?
if params[:p2]
cond << 'p2 IS NOT NULL'
end
return [] if cond.blank?
[cond.join(" AND "), args]
end