LoginSignup
3
1

More than 3 years have passed since last update.

【Rails】Herokuの本番環境で記事や画像の投稿ができない時の対処法

Last updated at Posted at 2020-06-05

記事や画像を投稿するアプリを作って、開発環境では問題なく動くが、なぜか本番環境で投稿すると"We're sorry, but something went wrong."とエラーになってしまった時の対処法です。

まずログを確認する

ターミナル
heroku logs -t

すると、以下のようなログを発見。
"ActiveModel::UnknownAttributeError (unknown attribute 'カラム名' for モデル名.):"

一度デプロイをした後新たにテーブルに追加したカラムが読み込まれていないのが原因らしい。

本番環境でもdb:migrateをする

ターミナル
heroku run rake db:migrate

しかしこれでも解消されないので、コンソールで本番環境のテーブルを確認する

コンソールで本番環境のテーブルを確認

まずコンソールを起動

ターミナル
$ heroku run rails console

コンソール上で「ActiveRecord::Base.connection_config」と入力

コンソール
pry(main)> ActiveRecord::Base.connection_config

すると、
"=> {:adapter=>"postgresql",
:encoding=>"unicode",
:pool=>5,
:username=>"xxxxxx",
:password=>"xxxxxx",
~}"
のように本番環境でのDBとの接続情報が表示されるので、その次に以下のコードでテーブル情報を確認

コンソール
pry(main)>ActiveRecord::Base.connection.tables

すると"=> ["テーブル1", "テーブル2"...]"のようにテーブル一覧が出てくる。
ここで、最初に確認したログでエラーメッセージが出ていたモデルのテーブルの中身を確認する。

コンソール
pry(main)>モデル名.inspect

そうすると
"=> "Post(id: integer, name: string, content: text, created_at: datetime, updated_at: datetime...)"

とカラムと型の一覧が出てくる訳ですが、ここでもやはり後から追加したカラムが読み込まれていない。

Herokuを再起動する

ターミナル
$ heroku restart

これで解決。
カラムを追加し、db:migrate後にサーバーを再起動していなかったことが原因でした。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1