Изменения в модели вступают в силу в консоли, но не на локальном хосте: 3000 (требуется перезапуск сервера ??)

#ruby-on-rails #validation #model #localhost

#ruby-on-rails #валидация #Модель #локальный хост

Вопрос:

Я пишу проверки для модели в своем приложении Rails 4, и по какой-то причине изменения не вступают в силу, когда я захожу на страницу по адресу localhost: 3000.

Например, я написал несколько presence: :true проверок для атрибутов Product model price, description и image_url, а также проверку численности для его цены. Когда я создаю новый недопустимый объект в консоли rails, он правильно помечается как недопустимый. Однако, когда я перехожу на страницу localhost:3000/products и обновляю, я могу создать новый объект даже с недопустимыми атрибутами.

Я немного поискал в StackOverflow и нашел несколько вещей о добавлении чего-то в мою конфигурацию, но у меня сложилось впечатление, что изменения в моделях должны вступить в силу немедленно при разработке и (хотя я новичок) Я не помню, чтобы когда-либо приходилось менять какую-либо конфигурацию, чтобы убедиться, что это так. И, как уже отмечалось, изменения вступают в силу в консоли, но не на самой странице.

Является ли это нормальным поведением?? Заранее спасибо за любую помощь.

Комментарии:

1. Вы правы, что он должен автоматически загружаться, если ваш сервер действительно запущен в среде разработки и кэширование отключено (в конфигурации для development.rb). Если вы добавите отладчик и используете приглашение отладки для оценки Rails.application.config.cache_classes , что вы получите? Должно быть false . Также проверьте Rails.application.config.action_controller.perform_caching .

2. Я довольно рано в книге Agile Web Development with Rails 4. Еще не использовал отладчик, но я могу поискать учебник или что-то в этом роде. Я запустил эти команды в консоли Rails, и они оба вернули false. Кроме того, Rails.env.development? верно

3. Понятия не имею, что здесь происходит. Теперь я внес изменения во флэш-уведомление в контроллере, и ЭТО не вступает в силу на localhost: 3000 без перезапуска сервера.

4. Установите драгоценный камень pry и поместите binding.pry его куда-нибудь в действие в коде вашего контроллера. Перезапустите serve rand, затем запустите его. Это должно дать вам точку останова в этой точке кода. Затем вы можете использовать сервер как консоль и выяснить, что там происходит. Вы запускаете сервер с rails s помощью или rails server ? (Либо это нормально). Или что-то еще?

5. Я использую rails s для запуска сервера.