我正在尝试在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执行它?
答案 0 :(得分:5)
您尚未为select
指定接收方,因此它会尝试执行select
模块上定义的Kernel
方法。在您的应用程序中,此调用包含在某个类中,该类成为默认接收器。您需要在irb中将此接收器添加到您的呼叫中,很可能是:
query = Product.select("product.id").where("admin_id = ? and account_id = ?", 3, 4)
更新
由于这被定义为范围,您可以使用范围名称来执行它:
query = Product.scope_name