我在application.rb中配置了从子文件夹加载所有模型的内容:
config.autoload_paths += Dir["#{config.root}/app/models/**/"]
让我们假设,我想在/models/foo/bar.rb中创建模型Bar
现在我可以将模型Bar命名为文件夹Foo,并将其命名为:
class Foo::Bar
end
相反的方法是将其放入模块中:
module Foo
class Bar
end
end
两种情况下来自全局命名空间的类的名称都是相同的。
考虑到,我不需要包含这个模块或包含在这个模块中,并且这只是为了将命名空间中的一个域的模型放置,这些方法有什么区别?
答案 0 :(得分:0)
一个不同的是,如果您还希望拥有Foo
课程,那么您的第二个示例将无效:
class Foo
end
module Foo
class Bar
end
end
# => TypeError: Foo is not a module
class Foo::Bar
end
# no error