rails指南中关于活动记录查询接口here的2.2节
这似乎表明,我可以传递一个字符串,指定条件,然后是一个值数组,在构建arel时,这些值应该在某个时候被替换。因此,我有一个语句来生成我的条件字符串,它可以是与它们之间的和和或链接在一起的不同数量的属性,我把一个数组作为第二个arg传递给where方法,然后我得到:
ActiveRecord::PreparedStatementIn有效值:绑定变量数错误(1为5)
这让我相信我做得不对。然而,我找不到任何关于如何正确地做这件事的东西。要以另一种方式重新声明问题,我需要将一个字符串传递给where方法,例如"table.attribute =?和table.attribute1 =?或table.attribute1 = ?“这些条件有一个未知的数目,它们在一起或连接在一起,然后传递一些东西,我认为数组是第二个参数,用于替换第一个参数条件字符串中的值。这是正确的方法吗,还是,我只是在某个地方遗漏了其他一些巨大的概念,而我却完全错了?我认为在某种程度上,这是可能的,而不是仅仅生成一个原始sql字符串。
发布于 2015-05-01 19:37:40
听起来像是在做这样的事情:
Model.where(“属性=?或attribute2 = ?",值、值)
然而,你需要这样做:
#注意缺少数组,因为最后一个参数Model.where(“attribute2 =?或attribute2= ?",value,value)有一个
有关如何工作的更多细节,请查看http://guides.rubyonrails.org/active_record_querying.html#array-conditions。
真的很接近。可以使用*my_list将数组转换为参数列表。
Model.where("id = ? OR id = ?", *["1", "2"])或
params = ["1", "2"]
Model.where("id = ? OR id = ?", *params)应起作用
https://stackoverflow.com/questions/5035365
复制相似问题