我有一个名为user_searches的模块。它执行一些不是用户模型核心的搜索,因此,为什么我将责任放在其他地方。我想组织所有这样的模型,在名为user的lib子文件夹中执行非核心用户功能。现在要在用户模型中包含模块的方法,我必须把...
require 'user/user_searches'
class User < ActiveRecord::Base
include UserSearches
end
...如果文件直接在lib文件夹中,我不需要require,但如果它在子文件夹中,则不需要。我该怎么办?我不需要要求?
答案 0 :(得分:3)
您可以将必要的需求行放入lib/user.rb
,这样就可以在应用程序启动时递归加载所有需求。
或者,你可以把这样的东西放到初始化器中:
# put into config/initializers/load_lib.rb
Dir["#{RAILS_ROOT}/lib/**/*.rb"].each { |f| require(f) }
它将需要lib文件夹中的所有ruby文件。你只需要确定这是否真的是你想要的:))
答案 1 :(得分:0)
这是导致
的作品在文件rails-2.2.2 / lib / initializer.rb中,方法default_load_paths初始化为加载路径只是没有子目录的lib文件夹,为了解决这个问题,你可以编辑你的项目`environment.rb配置文件并推入config.load_path array all subdirs。