活动资​​源查找在生产中不起作用

时间:2017-05-16 05:01:21

标签: ruby-on-rails api ruby-on-rails-5

正如标题所说,我的应用程序中有一个简单的ActiveResource应该从api获取数据。该集合在本地和生产服务器上都可以完美地运行。但是,.find在生产中不起作用,我得到一个奇怪的错误:

MyResource.find(1, params: { website_id: 2 })
ArgumentError: wrong number of arguments (given 2, expected 0..1)

如果我从连接到api的本地控制台运行它,则相同的查询有效。 API返回有效的响应。我不知道如何调试它。

class MyResource < ActiveResource::Base
  self.site = Rails.configuration.content_url
  self.prefix = "/api/websites/:website_id/"
  self.element_name = "game"
end

我不得不说,我在应用程序中有其他资源使用相同的api,find方法适用于它们,只有这个有问题。 由于某种原因,它打电话给

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/core.rb#L330 有2个参数,但我无法弄清楚是谁打了这样的电话。它只发生在生产模式,而不是开发。

2 个答案:

答案 0 :(得分:0)

我发现了问题,但这是最奇怪的事情。 在我的api控制器中的show方法中,我返回了一个对象,但我正在将哈希与一些额外的数据合并。如果我在浏览器中打开,响应很好,开发工作,但由于某种原因,在生产中它不想接受合并。 所以问题解决了,但仍然不知道为什么会这样发生。

答案 1 :(得分:0)

我在一个应用程序中遇到了类似的问题,该应用程序使用ActiveRecord作为供应商模型,使用ActiveResource作为具有供应商属性的交付模型。在开发中,如果尚未加载供应商模型,则可以获取交付并反序列化它,包括供应商属性。但是,如果已经加载了供应商模型,则尝试提取交货将导致本期中描述的错误。

如何在控制台中复制:

Vendor.connection
Delivery.find(1)

似乎AResource正在尝试创建Vendor的新实例。