1

我有一个包含多个字段的搜索表单,它目前有效。我以以下方式编写了搜索操作:

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] ...

但这不起作用,因为您似乎只能使用此语法添加哈希。所以我的问题是如何在查询中添加这样的条件。

4

1 回答 1

1

您不能将其添加到现有conditions哈希中。散列key: value参数where只能产生,不能。where key = valuekey <= value

使用参数化字符串和附加where

@results = Material.where(conditions).where("level <= ?", params[:level])
于 2013-09-18T17:51:14.743 回答