Мой собственный компьютер: MacOS
Производство: Heroku
Приложение: RoR с базой данных MySQL (правильно настроено как локально, так и в производстве)
ModelTwo has_many
ModelOne
ModelOne belongs_to
ModelTwo
ModelTwo использует self.model_one.any?
для принятия решения
Это нормально работает, на 100% нормально, в средах разработки и тестирования (RSpec).
В производстве (Heroku), self.model_one.any?
всегда возвращает false
.
Выполнение heroku run rails c
все идет гладко. Я могу видеть записи, сделать ТОЧНО ТО ЖЕ ЗВОНКИ КАК МОЙ КОД (буквально cmd + c cmd + v от Atom до консоли), и все это работает так, как должно. Я получаю true
, когда это должно быть true
и false
, когда это должно быть false
.
Приложение не аварийно завершает работу, потому что это не критичное решение, но в итоге оно использует блок, требующий большей производительности, чего я и хочу избежать, создавая это условие.
Я пытался выяснить это некоторое время, поэтому одна из вещей, которые я сделал, это поместил операторы puts
повсюду, чтобы отслеживать каждое изменение / сохранение в ModelOne, а также как ModelTwo получает данные в каждой точке.
Оказывается, ModelTwo кажется полностью слепой к ModelOne. Не только self.model_one.any?
всегда возвращает false
, но также ModelOne.count
всегда возвращает 0
. Даже когда rails c
читает это правильно, и другие модели и контроллеры в приложении тоже!
Опять же, это происходит ТОЛЬКО в производстве Heroku.
Развитие на 100% нормально! Я знаю по просмотру rails s
, как я перемещаюсь по приложению. Все мои операторы puts
показывают данные и модели, работающие как надо.
Тесты на 100% в порядке! Я удостоверился, что мой тест RSpec ModelTwo тестировал именно это решение, и оно прошло!
ЧТО ПРОИСХОДИТ ?? Чего мне не хватает?