HTTParty - 错误的参数数量 - 活动记录模型

时间:2014-05-12 17:29:22

标签: ruby-on-rails httparty

我的Active Record模型中有这个:

class ItemImage < ActiveRecord::Base
    belongs_to :item, :foreign_key => :upc, :primary_key => :upc

    include HTTParty
    format :xml

    base_uri 'https://myapi.com/v2'
end

每当我尝试在控制台中执行类似的操作时:ItemImage.first,Rails会抛出此错误:

ArgumentError: wrong number of arguments (0 for 1)
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/httparty-0.13.1/lib/httparty.rb:81:in `logger'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/relation/delegation.rb:37:in `block in method_missing'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/relation.rb:241:in `block in scoping'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/scoping.rb:98:in `with_scope'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/relation.rb:241:in `scoping'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/relation/delegation.rb:37:in `method_missing'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/explain.rb:26:in `logging_query_plan'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/relation.rb:159:in `to_a'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:380:in `find_first'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:122:in `first'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/querying.rb:5:in `first'
from (irb):1
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start'
from /Users/name/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'

我是HHTParty的新手,所以我真的不确定是怎么回事。我想知道这是否与我在活动记录模型中使用HTTParty有关。我见过的大多数例子都是在ActiveRecord之外使用过的。有什么帮助解决这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:2)

似乎是HTTParty gem和Rails之间的命名冲突,特别是ActiveRecord记录查询时的记录器组件,这是由于HTTParty模块直接包含在基于ActiveRecord的类中引起的。

编辑以发表评论:

没有理由不在有意义的AR模型中使用HTTParty。您不能将HTTParty方法包含到模型中。因此,虽然你不能使用方便的方法来设置格式和基础uri,就像你的样本一样,你应该能够像这样使用它:

response = HTTParty.get('https://myapi.com/v2/some-action', :format => :xml)

您可能还需要其他选项,例如:query等。是否更容易将逻辑保留在ItemImage类中或将其提取到可包含HTTParty的单独库类中取决于您的应用程序。