heroku(PGを実行)にデプロイした後、ローカル(sqlite3を実行)では正常に動作しますが、次のエラーが発生します
ActionView::Template::Error (PGError: ERROR: column "calendar_day" does not exist
LINE 1: ...ated_at > '2012-04-09 19:39:54.787077') AND (date(calendar_d...
^
SELECT date(created_at) as calendar_day, count(*) as total_checkins FROM "checkins" WHERE (user_id = 1 AND group_id = 1 AND created_at > '2012-04-09 19:39:54.787077') AND (date(calendar_day) = '2012-05-07') GROUP BY date(created_at) LIMIT 1):
...
app/helpers/groups_helper.rb:32:in `checkin_day'
「calendar_day」は永続化されたテーブルの実際の列ではなく、ASステートメントを使用してその場で定義する列であることに注意してください(これが技術的に何と呼ばれるかはわかりません)。関連するヘルパー関数を以下に示します。基本的に、ページの上部でcalendar_viewを呼び出し、後で結果をcheckinsパラメーターとしてcheckin_dayに渡します。このcheckin_day呼び出しで、エラーが発生しました。これがローカルでは正常に機能するが、herokuでは機能しない理由はありますか?
def calendar_view(member, timeperiod)
Checkin.select("date(created_at) as calendar_day, count(*) as total_checkins").where("user_id = ? AND group_id = ? AND created_at > ?", member.member.id, member.group.id, Time.now - timeperiod.days).group("date(created_at)")
end
def checkin_day(checkins, day)
ch = checkins.where("date(calendar_day) = ?", day).first
return ch.total_checkins if ch
return 0
end