我正在为我正在开发的应用程序创建一个rails引擎。
基本上,应用程序分为两部分:
私人
公众
私有站点是所有管理功能所在的主应用程序,公共站点(引擎)应该能够从私有应用程序访问模型。
对我来说,这听起来是相反的,但这正是规范所要求的。
我知道一般情况下,您会访问主应用程序中的引擎模型:
EngineName::型号
如何访问引擎中的主应用程序?
例子:
私人用户将转到foo.bar/videos/new并创建一个新视频。
公共用户可以访问foo.bar/public/videos并访问这些视频。
最佳答案
我刚刚测试了一下,能够在引擎内引用来自主机应用程序的代码,没有任何问题。
# In the main application
# lib/test_library.rb
TestLibrary
def self.say_something
"Hello! I am defined in the host application, not the Engine."
end
end
# Then, inside the engine
# app/views/your_engine_name/some_resource/index.html.erb
<%= TestLibrary.say_something %>
这在引擎模板中打印得很好。因此,如果您有一个
Video
模型,您可以在引擎中的控制器中引用它,就像控制器是应用程序的一部分一样。尽管如此,我不确定引擎模式是否最适合您的要求。
以这种方式编写它意味着您不能在其他地方重用引擎代码,如果重用不是您关心的问题,那么引擎可能是比您需要的更重的解决方案。您可以考虑使用namespace。
关于ruby-on-rails - Rails可挂载引擎使用主应用程序中的数据库模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37819927/