Rails 可安装引擎使用来自主应用程序的数据库模式
Rails mountable engine use db schema from main application
我正在为我正在开发的应用程序创建一个 rails 引擎。
应用程序基本上分为两部分:
- 私人
- Public
私有站点是所有管理功能所在的主要应用程序,public 站点(引擎)应该能够从私有应用程序访问模型。
这听起来好像与我相反,但这是规范要求的。
我知道一般情况下您会在主应用程序中访问引擎模型:
引擎名称::型号
如何访问引擎中的主应用程序?
示例:
私人用户会去 foo。bar/videos/new 并创建一个新视频。
public 用户会去 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.
我正在为我正在开发的应用程序创建一个 rails 引擎。
应用程序基本上分为两部分:
- 私人
- Public
私有站点是所有管理功能所在的主要应用程序,public 站点(引擎)应该能够从私有应用程序访问模型。
这听起来好像与我相反,但这是规范要求的。
我知道一般情况下您会在主应用程序中访问引擎模型:
引擎名称::型号
如何访问引擎中的主应用程序?
示例:
私人用户会去 foo。bar/videos/new 并创建一个新视频。
public 用户会去 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.