我有一个主机应用unicorn
,型号为Article
。
我还有一个挂载到名为blorgh
的主机应用程序中的可挂载引擎。它还有一个模型:Article
。它是命名空间,因此引擎文章的表名实际上是blorgh_articles
。
在引擎内部,我想抓住主机应用article
, 引擎的article
。这可能吗?
#blorgh/app/controllers/blorgh/articles_controller.rb
require_dependency "blorgh_application_controller"
module Blorgh
class ArticlesController < ApplicationController
def index
@articles = Article.all #properly grabs all the engine's articles
@host_app_articles = main_app.Article.all # this doesn't work. It should grab the host app's articles.
end
...
end
end
答案 0 :(得分:1)
使用::Article
引用顶级命名空间类,使用MyEngine::Article
引用引擎类。
虽然在Article
命名空间内单独使用MyEngine
将正确解析,但这样做会带来一些陷阱:
Article
。 MyEngine::Article
课程重命名为其他内容,但在此更改期间错过了对Article
的引用,则相同的代码现在将更改为引用全局::Article
。这可能会也可能不会破坏您的规格,并且可能会引入意想不到的行为。