Railsで作りHerokuにデプロイした試作アプリで以下のエラーが起きます。
ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "year_sum" does not exist
開発段階から順を追って説明します。
Bookモデル
id | name | year |
---|---|---|
1 | aaa | 1981 |
2 | bbb | 1980 |
3 | ccc | 1980 |
4 | ddd | 1987 |
5 | eee | 1984 |
こんな感じのデータから、yearカラムに入った年代ごとに、各年代のデータが何件あるかを表示させるため、以下のような書き方をしました。
※わかりにくいので上の表(データ5件のみ)で例をあげると、それぞれ1980年=2件、1981年=1件、1984年=1件、1987年=1件といった感じの結果を出したいということです。
controllerで以下のように書き、
controller
1@count = Book.group(:year).count
viewで以下のように書くと、
html
1<%= @count %>
以下のように表示されました。
{"1980"=>30, "1981"=>59, "1982"=>22, "1983"=>13, "1984"=>32, "1985"=>76, …}
次に、
記号「=>」以下の数字(30, 59, 22, 13, 32, 76, …)を全部足し、その結果を表示するため、ControllerとViewを以下のように書き換えました。※結果はデータの総数と一致しますが、他の理由からこの書き方にしています。
controller
1@count = Book.group(:year_sum).count
html
1<%= @count['year_sum'] %>
ローカル環境では、これで期待通りの表示になります。
ここからが本題なのですが、このアプリをherokuにデプロイして開くと、
We're sorry, but something went wrong.
となり、ページが表示されません。
heroku logs
を見ると、先ほどの
ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "year_sum" does not exist
というエラーが見つかり、year_sumがないことになっています。ローカル(Sqlite3)では問題ないのですが、heroku上(Postgresql)でエラーになるのはなぜでしょうか。ご教授願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。