Heroku 日志显示以下错误:
ActionView::Template::Error (undefined method `accepted_answer_id' for #<Question:0x000000052fd1e0>)
作为背景,我有一个模型Question
,has_many
答案。 Question
还有一个列accepted_answer_id
。
未定义的方法错误是指 _question.html.erb
中的一行,其中用于自定义不同阴影背景中答案计数的显示
<% if question.answers.count > 0 %>
<% if question.accepted_answer_id %>
<div class="pickedanswer">
<h4><%= question.answers.count %></h4>
</div>
<% else %>
<div class="numanswer">
<h4><%= question.answers.count %></h4>
</div>
<% end %>
<% else %>
<div class="noanswer">
<h4><%= question.answers.count%></h4>
</div>
<% end %>
我认为可能会因为最初question.accepted_answer_id
nil
而引发错误......但考虑到我构建逻辑的方式,我不知道为什么它不能简单地遵循(因为它在开发中已经成功了(。
感谢您的帮助。
您的架构缺少该属性。如果代码在本地工作,则可能是手动添加了该列,或者迁移不在版本控制中。
您可以看到迁移的运行方式如下:
$ heroku run rake db:migrate:status --app app_name
这将显示您的任何迁移是否尚未运行。应将这些内容与本地迁移相匹配。你也许错过了一个?
运行db:push
将销毁远程数据库并将其替换为本地副本,充其量。一般来说,你应该使用pgbackups:restore
来做这种事情(https://devcenter.heroku.com/articles/heroku-postgres-import-export(
我已经多次遇到这个问题,这些是我采取的步骤:
-
首先确保您已在 heroku 上迁移了数据库:
heroku run rake db:migrate
-
确保数据库实际上是在 heroku 上迁移的:
heroku pg:psql -a app_name d table_name
-
最后在 heroku 上重新启动应用程序:
heroku restart