Консоль Rails: перезагрузите! не отражает изменения в файлах модели? В чем может быть возможная причина?

Раньше все работало нормально. Я играл немного конфиг. Так что, может быть, я изменил некоторые конфигурации неосознанно.

вот конфиг среды /development.rb

  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_view.debug_rjs             = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # migration prefix with sequence #s
  config.active_record.timestamped_migrations = false

  #time zone
  config.time_zone = 'UTC'

Вот конфиг раздела application.rb

 # Configure the default encoding used in templates for Ruby 1.9.
 config.encoding = "utf-8"

 # Configure sensitive parameters which will be filtered from the log file.
 config.filter_parameters += [:password]

 config.active_record.schema_format = :sql

когда я бегу перезагрузить! на консоли рельсов верните true

2 ответа

Решение

reload! только перезагружает последний код в консольной среде. Он не переинициализирует существующие объекты.

Это означает, что если вы уже создали экземпляры каких-либо объектов, их атрибуты не будут обновлены, включая недавно введенные проверки. Однако, если вы создаете новый объект, его атрибуты (а также проверки) будут отражать перезагруженный код. больше здесь

Вы перезагружаете объект из базы данных?

Например:

>> a = User.last
=> #<User id: 16, email: "asdfadsf@sdfdsf.com">
>> reload!
Reloading...
=> true

"a" не будет отражать никаких изменений в вашей модели, пока вы не перезагрузите ее из базы данных.

Другие вопросы по тегам