RoR на Heroku: почему ModelOne.count не будет работать в ModelTwo только в производстве? - PullRequest
0 голосов
/ 12 мая 2018

Мой собственный компьютер: 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 тестировал именно это решение, и оно прошло!

ЧТО ПРОИСХОДИТ ?? Чего мне не хватает?

1 Ответ

0 голосов
/ 12 мая 2018

Рельсы имеют разные среды.И разные базы данных для каждой среды.Если у вас есть записи в базе данных разработки или производства, их нет в тестовой базе данных.Так что rails c может дать другой результат.Трудно анализировать без примеров кода, но я предполагаю, что у вас есть ошибки проверки, пожалуйста, проверьте model_one_entity.errors.

Я бы предположил проблемы в сильных параметрах контроллера, но если у вас ModelOne.count ноль, то это не таксоздайте его вообще, так что вам нужно проверить валидации.Или используйте методы create! и save! вместо create и save

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...