配列で取得したデータの合計(sum)を出すための記述についてです。
Rails(SQLite3)でcontrollerとviewを以下のように書くと、
controller
1@count = Book.group(:year).count
view
1<%= @count %>
以下のように表示されます。
{"1980"=>30, "1981"=>59, "1982"=>22, "1983"=>13, "1984"=>32, "1985"=>76, …}
このうち=>
以下の数字(30, 59, 22, 13, 32, 76, …)を全部足し、その結果を表示するために以下のように書き換えると、
controller
1@count = Book.group(:year_sum).count
view
1<%= @count['year_sum'] %>
期待通り、合計値が取得できます。
Postgresqlだと機能しない?
上記の記述のままHeroku(Postgresql)にデプロイするとエラーになり、
PG::UndefinedColumn: ERROR: column "year_sum" does not exist
となってしまいます。
文字通りyear_sum
というカラムが無いわけですが、開発段階(SQLite3)ではこのyear_sum
というカラムを
$ rails g migration AddYear_sumToモデル year_sum:string
的なことは一切やっておらず、もともとあったyearカラムにただ _sum をつけて使っているだけなのですが、上記のエラーが出るのはPostgresとSqliteの違いからくるものなのでしょうか?
だとすると、上述の処理をPostgres(本番環境)でもきちんと動作するように書くにはどう書けばいいのでしょうか。
ご教授願います。
回答1件
あなたの回答
tips
プレビュー