我的应用程序代码在 Rails 3.2 中的结构如下所示。如果我进入 Rails 控制台并输入Foo::Bar::FooBar
它将返回此警告:
warning: toplevel constant FooBar referenced by Foo::Bar::FooBar
应用程序代码和它们位于的文件:
# app/models/foo/bar/foo_bar.rb
module Foo
class Bar
class FooBar
end
end
end
# app/models/foo/bar.rb
module Foo
class Bar
end
end
# app/models/foo_bar.rb
class FooBar
end
我的自动加载路径没有从 Rails 的默认值改变。
我能够解决此问题的一种方法是将以下代码添加到Foo::Bar::FooBar
. 但是,感觉很脏,我想知道是否有配置选项或我做错的其他事情可以解决问题。
# app/models/foo/bar/foo_bar.rb
module Foo
# This line of code removes the warning and makes class methods execute
# on the Foo::Bar::FooBar class instead of the FooBar class.
class Bar; end
class Bar
class FooBar
end
end
end