rails指南中关于活动记录查询接口here的2.2节
这似乎表明,我可以传递一个字符串,指定条件,然后是一个值数组,在构建arel时,这些值应该在某个时候被替换。因此,我有一个语句来生成我的条件字符串,它可以是与它们之间的和和或链接在一起的不同数量的属性,我把一个数组作为第二个arg传递给where方法,然后我得到:
ActiveRecord::PreparedStatementIn有效值:绑定变量数错误(1为5)
这让我相信我做得不对。然而,我找不到任何关于如何正确地做这件事的东西。要以另一种方式重新声明问题,我需要将一个字符串传递给where方法,例如"table.attribute =?和table.attribute1 =?或table.attribute1 = ?“这些条件有一个未知的数目,它们在一起或连接在一起,然后传递一些东西,我认为数组是第二个参数,用于替换第一个参数条件字符串中的值。这是正确的方法吗,还是,我只是在某个地方遗漏了其他一些巨大的概念,而我却完全错了?我认为在某种程度上,这是可能的,而不是仅仅生成一个原始sql字符串。
发布于 2011-02-17 23:01:44
听起来你在做这样的事:
Model.where("attribute = ? OR attribute2 = ?", [value, value])然而,你需要这样做:
# notice the lack of an array as the last argument
Model.where("attribute = ? OR attribute2 = ?", value, value)有关如何工作的更多细节,请查看http://guides.rubyonrails.org/active_record_querying.html#array-conditions。
发布于 2014-10-03 16:42:38
这其实很简单:
Model.where(attribute: [value1,value2])发布于 2014-09-10 09:21:16
而不是像这样多次将相同的参数传递给where()
User.where(
"first_name like ? or last_name like ? or city like ?",
"%#{search}%", "%#{search}%", "%#{search}%"
)您可以很容易地提供一个散列。
User.where(
"first_name like :search or last_name like :search or city like :search",
{search: "%#{search}%"}
)这使得您的查询对于长参数列表来说更加可读性。
https://stackoverflow.com/questions/5035365
复制相似问题