我正在使用Ruby 2.11编写Ruby on Rails 4.1应用程序。结构是域 - >团队 - >用户。因此,用户属于一个团队,我有时需要从一个域创建一个团队(因此他们是关联的)。想想星巴克 - > NY Central Team - >巴菲斯先生。
我已经制作了一些构建器类并将它们放在app / builder中,但是当我尝试使用该类时,它在Rails控制台中显示了未初始化的常量。因此,例如,我有app/builders/team_builder.rb
中的文件:
class TeamBuilder
attr_reader :domain, :params
def initialize(domain, params = {})
@domain = domain
@params = params
end
def build
domain.teams.build(params)
end
end
但是当我输入TeamBuilder.new(domain, name: 'Team name here!')
时,我得到了回复
NameError: uninitialized constant TeamBuilder
它似乎无法识别我上面添加的新类,这让我觉得它没有加载它。但我认为app /中的所有子目录都已加载。
完全难以接受这个,我找不到关于此的指南或文件(也许它就在那里 - 某个地方......)
答案 0 :(得分:3)
进入rails控制台(rails c)并输入以下内容:
YourAppName::Application.config.eager_load_paths
(其中YourAppName是在您的environment.rb中调用的任何内容,其中调用了initialize!)。这应该显示自动加载到您的应用程序中的所有路径(在自定义之前)。
看起来自动路径添加魔法发生在这里https://github.com/rails/rails/blob/master/railties/lib/rails/engine/configuration.rb
答案 1 :(得分:0)