Rails查找某些参数何时为空白

时间:2010-11-20 17:45:06

标签: ruby-on-rails search activerecord find

我有一个包含两个字段的搜索表单:x,y

执行搜索时,它将查找符合所有条件的记录。但是,将两个条件中的任何一个都设置为“全部”,将其留空。

如果设置为all,我应该将params [:x]和params [:y]设置为什么。

params[:x] = ? unless params[:x]
params[:y] = ? unless params[:y]

users = User.where(["x = ? AND y = ?", params[:x], params[:y]])

2 个答案:

答案 0 :(得分:4)

您需要链接您的条件,而不是尝试构建一个如此具体的范围。您可以使用滑动范围技术:

scope = User

if (params[:x].present?)
  scope = scope.where(:x => params[:x])
end

if (params[:y].present?)
  scope = scope.where(:y => params[:y])
end

users = scope.all

通过这种方式,您可以根据可能存在的参数有条件地使用限制。

答案 1 :(得分:4)

我建议使用哈希来构建你的条件:

conditions = {}
conditions[:x] = params[:x] unless params[:x].blank?
conditions[:y] = params[:y] unless params[:y].blank?

users = User.find(:all, :conditions => conditions)