Rails 控制台: 重载! 没有反映模型文件中的变化? 可能的原因是什么?

之前还好好的。我一直在玩配置游戏。也许我不知不觉中改变了一些配置。

下面是 Environment/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 的 config 部分

 # 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

当我在 Rails 控制台上运行 reload! 时,它返回 true

67126 次浏览

Are you reloading the object from the database?

For example:

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

'a' won't reflect any changes to your model until you reload it from the db.

reload! only reloads the latest code in the console environment. It does not re-initialize existing objects.

This means if you have already instantiated any objects, their attributes would not be updated - including newly introduced validations. However, if you create a new object, its attributes (and also validations) will reflect the reloaded code. more here