Railsで検索を作る時ちょっと面倒臭いです。
EZ_Where, Where Plugin, CriteriaQueryなど、検索条件を書きやすくするプラグインがいくつかありますが、railswhereというプラグインは記述が簡潔で気に入りました。
timcharper’s railswhere at master ? GitHubWhere clause generator Building a complicated where clause made easy
インストール:
script/plugin install git://github.com/timcharper/railswhere.git
施設(Facility)の検索フォームで、
「都道府県」、「フリーワード」
で検索という場合、
where = Where.new
unless params[:prefecture_id].blank?
where.and('prefecture_id = ?', params[:prefecture_id])
end
unless params[:word].blank?
where.and(
Where.new("name LIKE ?", "%#{params[:word]}%").
or("description LIKE ?", "%#{params[:word]}%")
)
end
@facilities = Facility.paginate(
:page => params[:page],
:conditions => where.to_s)
という感じです。(ちょw%%かよ!はスルーで)
パッと見だけで使い方がわかるのがうれしい。
※間違ってたので修正しました。簡単に条件を入れ子にできるのもいいですね。