我在lib目录中有一个文件,它使用模型中定义的一些常量,如:
class User < ActiveRecord::Base MAX_EMAIL_ADDRESS_LENGTH = 255 end
然后我在lib / foo.rb
module Foo LONG_EMAIL_ADDRESS = "foo@bar.com".rjust(User::MAX_EMAIL_ADDRESS_LENGTH,"a") end
由于没有找到类User,它失败了.如何在lib上的该文件之前加载User?
我正在我的application.rb中加载该文件:
config.autoload_paths += %W(#{config.root}/lib)
解决方法
第一部分是正确的:
config.autoload_paths += %W(#{config.root}/lib)
接下来,重要的是模块
module Foo ... end
必须放入
lib/foo.rb
文件.
然后,它可以包含在应用程序代码中.
class Comment < ActiveRecord::Base include Foo ... end
如果不打算包含lib目录中的文件foo.rb(但这可能是一种错误的方式),那么在这段代码中使用Rails模型和其他东西你应该把它放到foo.rb中:
require_relative "../config/environment.rb"