Rails 2.3.8を使用して開発しており、検索条件を作成するためのより良い方法を探しています。
検索ページでは、ユーザーが検索条件を設定するユーザー検索のように、検索条件はユーザーが選択した条件(年齢、国、郵便番号など)によって異なります。
複数の検索条件を設定するために、以下のコードを記述しました。
# Add condition if params post.
conditions_array = []
conditions_array << ['age > ?', params[:age_over]] if params[:age_over].present?
conditions_array << ['country = ?', params[:country]] if params[:country].present?
conditions_array << ['zip_code = ?', params[:zip_code]] if params[:zip_code].present?
# Build condition
i = 0
conditions = Array.new
columns = ''
conditions_array.each do |key, val|
key = " AND #{key}" if i > 0
columns += key
item_master_conditions[i] = val
i += 1
end
conditions.unshift(columns)
# condiitons => ['age > ? AND country = ? AND zip_code = ?', params[:age], params[country], prams[:zip_code]]
@users = User.find(:all,
:conditions => conditions
)
このコードは正常に機能しますが、見苦しく、賢くありません。検索条件を作成するためのより良い方法はありますか?