1

Heroku ログに次のエラーが表示されます。

ActionView::Template::Error (undefined method `accepted_answer_id' for #<Question:0x000000052fd1e0>)

背景として、私はモデルを持っていQuestionますhas_manyQuestionコラムもあります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が、ロジックを構造化した方法を考えると、単純に従うことができない理由がわかりません (開発で成功したため)。

ご協力いただきありがとうございます。

4

2 に答える 2

2

スキーマにその属性がありません。コードがローカルで動作する場合は、その列を手動で追加したか、移行がバージョン管理に含まれていません。

移行がどのように実行されたかを次のように確認できます。

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

これは、移行が実行されていないかどうかを示します。それらをローカルの移行に一致させる必要があります。あなたはおそらく1つ欠けていますか?

実行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 に答える