使用 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() 作为另一个方法的参数时的段错误

从ESPAsyncWebServer请求参数读取数据时的冥想错误

使用错误数量的参数调用 CMake 设置目标属性

使用 Mandrill 邮件程序设计异步错误数量的参数(1 比 2)