模型-视图-控制器- Rails关联在Heroku上失败,但在本地盒子上有效



当相同的代码在我的本地设置上完美地工作时,为什么我会在我的Heroku应用程序上得到NoMethodError ?

错误由以下代码触发:

@customer = Customer.find(1)
@customer.responses.create(:offer_id => '1', :digit => '2')

该代码在我的本地服务器和本地Rails控制台中按预期工作。

但是,在Heroku上,上面的代码会触发NoMethodError:

NoMethodError (undefined method `responses' for #<Customer:0x7f7bcbee3808>):
Response模型通过belongs_to: Customer 方法绑定到Customer模型

另外,我可以登录到Heroku控制台并运行这个,没有任何问题:

Response.create(:offer_id => '1', :customer_id => '1', :digit => '2')

那么如果上面的工作和两个版本在我的本地机器上工作良好,为什么关联在Heroku上失败?

,

运行Rails 3.0.6并在Heroku Ruby 1.8.7和Ruby 1.9.2上测试

数据库在Heroku和我的本地盒子上是相同的。

通常当这样的东西不起作用时,它表明您缺少has_many关联。如果您希望同时访问关联的belongs_tohas_many,则需要同时定义

听起来,如果它在您的本地机器上工作而不是Heroku,那么这可能是因为您没有将更改推送到Heroku服务器并重新启动那里的控制台。

Marco,我想了一下,我有一些猜测供你尝试。在你做这两件事之前,重启你的应用。有时候这会创造奇迹。

heroku restart

好的,现在,在控制台中输入

@customer.responses

返回什么?我想应该是[]。也许做一些检查等可以给我们一些启示。如果您手动构建和关联响应,您能让它显示出来吗?

第二,你的no方法错误是在responses上,而不是在create上,所以无论你在那之后键入什么都可能无关紧要,但是,你的offer_iddigit字段是整数吗?如果是这样,请尝试使用整数而不是字符串创建它们。与MySQL或SQLite相比,PostgreSQL是如此脆弱,我有很多问题可以追溯到我在开发Heroku之前不熟悉PostgreSQL。

@customer.responses.create(:offer_id=>1,:digit=>3)

这可能无关紧要,但值得一试。

另一件要检查的事情是所有的回调和验证等。有什么失败的吗?这可能看起来无关紧要,但我之前遇到过一些问题,因为我忽略了回调中看似微小的无声失败,导致事情变得非常奇怪。我相信您正在进行测试,但是如果您在这个模型上的任何地方都有很浅的测试覆盖率,那么您不妨使用这个漏洞查找作为加强它的机会:)

对这个错误表示同情,我不知道这些是否有帮助,但是祝你好运!如果Heroku的工作人员发现了这个问题,请贴出来,我很有兴趣从中学习!

我认为你的问题是如何创建响应:

@customer.responses.create(:offer_id => '1', :digit => '2')

你可以试试这个

Response.create(:offer_id => '1', :digit => '2', :customer_id => 1)

相关内容

  • 没有找到相关文章

最新更新