TypeError:错误的参数类型String(预期的数组)

时间:2014-06-04 12:39:41

标签: ruby-on-rails ruby

我正在尝试在rails控制台中执行以下行(bundle exec rails c):

query = select("product.id").where("admin_id = ? and account_id = ?", 3, 4)

但我得到以下错误:

TypeError: wrong argument type String (expected Array)
from (irb):83:in `select'

此代码似乎在应用程序中正常工作。关于为什么它在irb中失败的任何线索?


ruby版本 - > 1.9.3p545
Rails版本 - > 3.2.8


此代码最初在作用域中的ActiveRecord类(Product)中定义。 如何通过rails console执行它?

1 个答案:

答案 0 :(得分:5)

您尚未为select指定接收方,因此它会尝试执行select模块上定义的Kernel方法。在您的应用程序中,此调用包含在某个类中,该类成为默认接收器。您需要在irb中将此接收器添加到您的呼叫中,很可能是:

query = Product.select("product.id").where("admin_id = ? and account_id = ?", 3, 4)

更新

由于这被定义为范围,您可以使用范围名称来执行它:

query = Product.scope_name