Ruby on rails Rails引擎和名称空间。需要名称空间的情况?
我对引擎中的名称空间有点困惑。在Rails引擎中,使用了Ruby on rails Rails引擎和名称空间。需要名称空间的情况?,ruby-on-rails,ruby-on-rails-3,rails-engines,Ruby On Rails,Ruby On Rails 3,Rails Engines,我对引擎中的名称空间有点困惑。在Rails引擎中,使用了隔离\u名称空间 module Blog class Engine < Rails::Engine isolate_namespace Blorgh end end 因为所有的东西都是有名称空间的(模型、表名等等),但它看起来像是有很多注释。为什么在关联键中不使用名称空间,并且在主机应用程序中存在注释资源的情况下,rails如何知道我指的是哪个注释?当您在某个模块内时,您可以引用模块的其他成员,而无需给出模块名称,例
隔离\u名称空间
module Blog
class Engine < Rails::Engine
isolate_namespace Blorgh
end
end
因为所有的东西都是有名称空间的(模型、表名等等),但它看起来像是有很多注释。为什么在关联键中不使用名称空间,并且在主机应用程序中存在
注释
资源的情况下,rails如何知道我指的是哪个注释
?当您在某个模块内时,您可以引用模块的其他成员,而无需给出模块名称,例如:
module Foo
class Bar
def initialize
@baz = Baz.new # same as Foo::Baz.new
end
end
class Baz
end
end
如果当前模块中不存在Baz
,它将向下级联以查找定义,最终调用const_missing
(在Rails中自动加载类就是基于它构建的),如果找不到,则抛出一个错误
你剩下的问题已经回答了
module Foo
class Bar
def initialize
@baz = Baz.new # same as Foo::Baz.new
end
end
class Baz
end
end