Mar*_*sov 1 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我在/lib/models/scopes.rb中有模块
module Models
module Scopes
extend ActiveSupport::Concern
...
end
end
Run Code Online (Sandbox Code Playgroud)
我试图从模型中包含它:
class User < ActiveRecord::Base
include Models::Scopes
end
Run Code Online (Sandbox Code Playgroud)
并得到错误:
NameError:未初始化的常量User :: Models
如何解决这个麻烦?将这类文件保存在/ lib中可能是错误的吗?
环境:Rails v3.1 Ruby v1.9.3
Rails不需要lib自动在目录中的文件,但您可以添加到自动加载的路径config/application.rb:
config.autoload_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)
重新启动服务器以获取新设置.
现在,这将在首次使用模块名称时自动加载文件.在开发模式下,您可能希望在每次更改后重新加载模块,以便在不重新启动服务器的情况下查看更改.为此,请将其添加为急切的加载路径:
config.eager_load_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)
该范围不应该是一个问题,只要你没有一个Models类或模块内 User或其他地方.
| 归档时间: |
|
| 查看次数: |
4495 次 |
| 最近记录: |