使用 Squeel 时的参数数量错误
Posted
技术标签:
【中文标题】使用 Squeel 时的参数数量错误【英文标题】:Wrong number of arguments when using Squeel 【发布时间】:2012-12-06 05:28:40 【问题描述】:首先,我在 Rails 控制台中进行简单的 squeel 测试。
User.wherename == "abc"
新建Ruby项目没有问题
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."name" = 'abc' => []
但是,当我将它应用到现有项目时,它给了我错误消息:
1.9.3p125 :001 > User.wherename == "abc"
ArgumentError: wrong number of arguments (0 for 1) from /Users/xxx/.rvm/gems/ruby-1.9.3-p125/gems/parse_resource-1.7.3/lib/parse_resource/query.rb:11:in `where'
from /Users/xxx/.rvm/gems/ruby-1.9.3-p125/gems/parse_resource-1.7.3/lib/parse_resource/base.rb:243:in `where'
from (irb):1
from /Users/xxx/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands/console.rb:47:in `start'
from /Users/xxx/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start'
from /Users/xxx/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
我发现的最相关的问题是Squeel issue #193。
它说 Squeel 没有加载。但是,就我而言,new-created 可以在同一台机器上实现。
无论如何,我尝试按照它所述更改 active_record.rb,但对于我现有的项目,问题仍然存在。
我正在使用 Ruby-1.9.3-p125、Rails v3.2.6 和 Squeel 1.0.14。
【问题讨论】:
您的 Rails 和 Ruby 版本都已过时,并且较新的版本具有重要的安全修复程序。您应该尽快升级到最新版本。 当然,我稍后会做。但实际上我受到云服务 Heroku 的限制。我必须遵循它的 ruby 版本以确保我的网站正常工作。 gem、parse_resource 和 squeel 之间是否可能存在冲突? 同样的问题,发到github:github.com/ernie/squeel/issues/206 【参考方案1】:你可以使用 where 子句,而不是使用:
User.filter(:name => 'abc').first
这可能适用于您的情况
【讨论】:
> NoMethodError: 未定义方法 `filter' for User:Class 似乎不是一种方法以上是关于使用 Squeel 时的参数数量错误的主要内容,如果未能解决你的问题,请参考以下文章
从 C# 执行 Oracle 存储过程 - 调用中的参数数量或类型错误
Boost statechart - 使用状态图作为模板参数时的编译错误
使用 std::string.c_str() 作为另一个方法的参数时的段错误