ruby-on-rails-3 – 如何在rails3中用AR查询界面指定多个值

每节2.2节导轨上的Active Record查询界面here

这似乎表明我可以传递一个指定条件的字符串,然后是一些在一段时间内被替换的值的数组。所以我有一个生成我的条件字符串的语句,它可以是不同数量的属性与它们之间的AND或OR链接在一起,我将一个数组作为第二个参数传递给where方法,我得到:

ActiveRecord::PreparedStatementInvalid: wrong number of bind variables (1 for 5)

这让我相信我这样做不正确。但是,我没有找到任何正确的方法。要重申这个问题,我需要传递一个字符串到where方法,如“table.attribute =?AND table.attribute1 =?OR table.attribute1 =?”这些条件的未知数量和orred一起,然后传递一些东西,我认为将是一个数组作为第二个参数,将用于替换第一个参数条件字符串中的值。这是否是正确的方法,或者,我只是在某个地方失去了一些其他巨大的概念,而我正在错过这一切?我会认为,这必须是可能的,只是生成一个原始的sql字符串。

听起来你在做这样的事情:

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了解更多的细节如何运作。

http://stackoverflow.com/questions/5035365/how-to-specify-multiple-values-in-where-with-ar-query-interface-in-rails3

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails-3 – 如何在rails3中用AR查询界面指定多个值