Приложение My Rails 5 работает точно так, как ожидалось, в моей локальной среде с SQLite3, но когда я развернул его в Heroku, и он работает без ошибок, но некоторые вещи не являются отображается так же. Я думаю, что я отслеживал его до следующего запроса ActiveRecord в моем контроллере заданий:Rails-запрос ActiveRecord работает локально, но другой результат на Heroku
@jobs_later = current_user.jobs.joins(:stage).where("stage_id != ? AND next_step_date > ?", 5, Date.today).order(:next_step_date, stage_id: :desc)
Запрос захватывает список заданий, относящихся к текущему пользователю и отображает некоторую информацию о них в представлении с помощью переменного экземпляра @jobs_later.
Вот SQL из моего локального окр:
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]]
Job Exists (2.3ms) SELECT 1 AS one FROM "jobs" WHERE "jobs"."user_id" = ? LIMIT ? [["user_id", 1], ["LIMIT", 1]]
(2.5ms) SELECT COUNT(*) FROM "jobs" INNER JOIN "stages" ON "stages"."id" = "jobs"."stage_id" WHERE "jobs"."user_id" = ? AND (stage_id != 5 AND next_step_date > '2017-01-31') [["user_id", 1]]
Job Load (0.3ms) SELECT "jobs".* FROM "jobs" INNER JOIN "stages" ON "stages"."id" = "jobs"."stage_id" WHERE "jobs"."user_id" = ? AND (stage_id != 5 AND next_step_date > '2017-01-31') ORDER BY "jobs"."next_step_date" ASC, "jobs"."stage_id" DESC [["user_id", 1]]
Step Load (2.2ms) SELECT "steps".* FROM "steps" WHERE "steps"."job_id" = ? ORDER BY "steps"."id" DESC LIMIT ? [["job_id", 11], ["LIMIT", 1]]
CACHE (0.0ms) SELECT "steps".* FROM "steps" WHERE "steps"."job_id" = ? ORDER BY "steps"."id" DESC LIMIT ? [["job_id", 11], ["LIMIT", 1]]
Stage Load (0.3ms) SELECT "stages".* FROM "stages" WHERE "stages"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]]
А вот SQL с Postgres на Heroku:
2017-01-31T14:24:54.842062+00:00 app[web.1]: D, [2017-01-31T14:24:54.841973 #4] DEBUG -- : [19703b11-bfbb-4c6f-99b6-b617853ee65a] User Load (1.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
2017-01-31T14:24:54.858947+00:00 app[web.1]: I, [2017-01-31T14:24:54.858813 #4] INFO -- : [19703b11-bfbb-4c6f-99b6-b617853ee65a] Rendering jobs/index.html.erb within layouts/application
2017-01-31T14:24:54.867244+00:00 app[web.1]: D, [2017-01-31T14:24:54.867099 #4] DEBUG -- : [19703b11-bfbb-4c6f-99b6-b617853ee65a] Job Exists (6.6ms) SELECT 1 AS one FROM "jobs" WHERE "jobs"."user_id" = $1 LIMIT $2 [["user_id", 1], ["LIMIT", 1]]
2017-01-31T14:24:54.786697+00:00 heroku[router]: at=info method=POST path="/jobs/1" host=agile-lowlands-76952.herokuapp.com request_id=5d33ac27-2f26-495e-8261-0d0050723aa6 fwd="173.48.208.24" dyno=web.1 connect=0ms service=159ms status=302 bytes=1073
2017-01-31T14:24:54.904549+00:00 heroku[router]: at=info method=GET path="/jobs" host=agile-lowlands-76952.herokuapp.com request_id=19703b11-bfbb-4c6f-99b6-b617853ee65a fwd="173.48.208.24" dyno=web.1 connect=0ms service=77ms status=200 bytes=3454
2017-01-31T14:24:54.883387+00:00 app[web.1]: D, [2017-01-31T14:24:54.883287 #4] DEBUG -- : [19703b11-bfbb-4c6f-99b6-b617853ee65a] (3.0ms) SELECT COUNT(*) FROM "jobs" INNER JOIN "stages" ON "stages"."id" = "jobs"."stage_id" WHERE "jobs"."user_id" = $1 AND (stage_id != 5 AND next_step_date > '2017-01-31') [["user_id", 1]]
Вы заметите, что на местном уровне он проходит через работу пользовательской нагрузки, Job Exists, Job Load, Step Load и Stage Load.
Но в производстве он проходит через User Load, Job Exits, а затем останавливается. Не уверен, что шаги героя [router] находятся между ними или если это имеет к этому какое-то отношение.
Я также проверил postgres db, и данные были введены правильно, так что это не так, как будто это выглядит пустым.
Кто-нибудь знает, почему это может произойти? Это сводит меня с ума.