我有一个包含多个字段的搜索表单,目前有效。我已按以下方式编写了搜索操作:
conditions = {}
conditions[:x] = params[:x] unless params[:x].blank?
conditions[:y] = params[:y] unless params[:y].blank?
conditions[:z] = params[:z] unless params[:z].blank?
etc.
@results = Material.where(conditions)
这很好。但现在我想添加一个条件,基本上说“水平小于或等于params [:level],这在我脑海中看起来像这样:
conditions[:level] <= params[:level] ...
但这不起作用,因为看起来你只能使用这种语法添加哈希。所以我的问题是如何在查询中添加这样的条件。
答案 0 :(得分:1)
您无法将其添加到现有的conditions
哈希中。 key: value
的哈希where
参数只能生成where key = value
,而不是key <= value
。
使用参数化字符串和其他where
:
@results = Material.where(conditions).where("level <= ?", params[:level])