blog.sowatchasayin

Rails etc.

一度にいろんな条件でFindしたい

パラメータからFindの条件を作る部分をまとめたかった。
普通の条件なら
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

No comments:

Post a Comment

Author

Fujimura Daisuke
http://fujimuradaisuke.com

Labels