我正在使用 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
)
这段代码运行良好,但丑陋且不聪明。有没有更好的方法来建立查找条件?