#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
для запуска сервера.