1

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_idnil.. 但考虑到我构建逻辑的方式,我不知道为什么它不能简单地遵循(因为它在开发中已经成功完成)。

谢谢你的帮助。

4

2 回答 2

2

您的架构缺少该属性。如果您的代码在本地工作,那么您要么手动添加了该列,要么迁移不在您的版本控制中。

你可以看到迁移是这样运行的:

$ heroku run rake db:migrate:status --app app_name

这将显示您的任何迁移是否尚未运行。您应该将它们与您的本地迁移相匹配。你可能错过了一个吗?

运行db:push破坏您的远程数据库并用本地副本替换它,充其量。通常你应该pgbackups:restore用来做这种事情(https://devcenter.heroku.com/articles/heroku-postgres-import-export

于 2013-02-06T21:33:53.690 回答
2

我多次遇到这个问题,这些是我采取的步骤:

  1. 首先确保你已经迁移了heroku上的数据库:

    heroku run rake db:migrate
    
  2. 确保数据库实际上是在 heroku 上迁移的:

    heroku pg:psql -a app_name
    \d table_name
    
  3. 最后在heroku上重启应用:

    heroku restart
    
于 2013-10-01T16:25:23.440 回答