从 Rails 3 项目的 lib 目录中访问模型

2023-11-26

我在 lib 目录中有一个文件,它使用模型中定义的一些常量,例如:

class User < ActiveRecord::Base
   MAX_EMAIL_ADDRESS_LENGTH = 255
end

然后我在 lib/foo.rb 中

module Foo
  LONG_EMAIL_ADDRESS = "[email protected]".rjust(User::MAX_EMAIL_ADDRESS_LENGTH, "a")
end

由于找不到 User 类而失败。如何在 lib 上的该文件之前加载用户?

我通过将其放在我的 application.rb 中来加载该文件:

config.autoload_paths += %W(#{config.root}/lib)

我知道这是一个老问题,但我刚刚遇到了同样的问题,经过一番搜索后,我找到了一个解决方案,所以我认为值得分享它。

我想在 /lib 目录中的一个必需文件中使用模型“Foo”。首先,我这样做了,但没有成功:

# in my rake file
task :foo_task do
  require /some_path/lib/bar.rb
end

# in /lib/bar.rb
puts "Foo = #{Foo.count} "

# => uninitialized constant Foo

经过一番搜索,我发现要访问库文件中的模型,我需要在任务中指定环境。所以我只是将其添加到我的任务声明中:

task :foo_task => [:environment] do

现在,当我调用我的任务时,它会正确地输入 Foo 的数量:

# => Foo = 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Rails 3 项目的 lib 目录中访问模型 的相关文章

随机推荐