Ruby on rails Rails应用程序中的模块化设计建议
我有一个应用程序,将有3个模块,每个模块在自己的引擎中创建,即:Ruby on rails Rails应用程序中的模块化设计建议,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个应用程序,将有3个模块,每个模块在自己的引擎中创建,即: 管理 通讯录 历法 在管理模块中,管理员用户可以添加、编辑和删除其他用户。这些用户中的每一位都将拥有一些通用功能,比如他们在应用程序上的所有操作日志,以及每个模块的用户权限 在通讯簿模块中,用户将有许多联系人。在日历模块中,用户将有许多事件 我想创建一个单独的用户gem/模块,在所有引擎中共享,但我不确定如何处理特定于每个引擎的关系/模型。我曾想过在每个引擎中扩展用户模块,以包括特定的关系,但随后我需要使用引擎的用户模型而不是主应
地址簿::User.contacts
而不仅仅是User.contacts
)
这是我唯一的选择还是我遗漏了一些基本的东西
如果您对此有任何建议,我们将不胜感激。Rails引擎可以选择一个独立的名称空间,正如您在
AddressBook:User.contacts
中所描述的那样,但并不总是最好使用它。没有它,您可以在应用程序和每个引擎中定义用户模型,并根据需要扩展该模型。例如,在应用程序中:
class User < ActiveRecord::Base
def embiggen
self.bigness *= 2
end
end
然后您总是调用
User
,不必添加Engine::User
前缀 Rails引擎可以选择一个独立的名称空间,正如您在AddressBook:User.contacts中所描述的那样,但并不总是最好使用它。没有它,您可以在应用程序和每个引擎中定义用户模型,并根据需要扩展该模型。例如,在应用程序中:
class User < ActiveRecord::Base
def embiggen
self.bigness *= 2
end
end
然后您总是调用User
,不必添加Engine::User
前缀 User
在每个应用程序中是否始终具有完全相同的数据元素,或者User
有时是否需要在主机应用程序中具有其他数据元素?核心User
不会更改(即它始终具有用户权限、用户名等),但关系可能会更改。此外,每个用户将为每个模块提供可定制的字段(例如启用帮助、刷新时间等)user
在每个应用程序中始终具有完全相同的数据元素,或者user
有时需要在主机应用程序中具有其他数据元素?核心用户
不会更改(即,它将始终具有用户权限、用户名等),但关系可能会改变。此外,每个用户将为每个模块提供可自定义的字段(例如,启用帮助、刷新时间等)这是有道理的。我应该使用的名称是embiggen
和self.bigness
,还是这是一个示例?在您的示例中,用户是在主应用程序中还是在自己的gem中(这是我想要的)?@TheoScholiadis,它们纯粹是示例。你可以在主应用程序或gem中定义用户,由你选择。哦,好吧。我刚刚理解你的意思。我一直在引擎模块中包括我的扩展,比如class Engine::User
或Module Engine class User end
。谢谢。这就澄清了s很重要。比我想象的要简单。这很有意义。embiggen
和self.bigness
是我应该使用的名称,还是这是一个例子?同样,在你的例子中,用户是在主应用程序中还是在它自己的宝石中(这是我想要的)?@TheoScholiadis,它们纯粹是示例。你可以在主应用程序或gem中定义用户,由你选择。哦,好吧。我刚刚理解你的意思。我一直在引擎模块中包括我的扩展,比如class Engine::User
或Module Engine class User end
。谢谢。这就澄清了这很重要,比我想象的要简单。