我们正在开发一个Rails应用程序,它将作为多个应用程序的后端。 Rails应用程序将有一个Web CMS,允许管理员用户管理他们的移动应用程序(一个管理员用户可以拥有1..N移动应用程序)。
相同的Rails应用也可以作为这些移动应用的API。移动应用程序彼此完全分离,不共享任何数据。我们有不同角色的用户( global_admin 在CMS中管理他的应用, place_manager 管理他在CMS中的应用中的位置,以及用户移动应用程序)。这些用户不会在应用之间共享(如果用户在移动应用中注册,他将能够在该应用中登录 ;因此,如果他想要登录其他移动应用,则需要再次注册。)
实现这一目标的最佳方法是什么?我们正在考虑:
User
模型,在不同的应用上具有不同的角色(应用1上的global_admin
,应用2的user
,应用上的manager
3 ...)。如果用户注册app 1,则会创建一条记录,如果他注册了app 2,我们只会为其添加一个角色,但他认为他创建了一个新帐户。提前谢谢
答案 0 :(得分:2)
API / API用户场景看起来像多租户的情况,其中每个应用程序作为单独的实例运行。对于数据库级别的多租户,您可以查看类似Apartment的内容,或者为应用级别多租户查看Milia。
数据库级别通常更易于管理,但您需要针对全局管理要求的变通方法。
答案 1 :(得分:1)
如果您想为多个移动应用使用单个rails
应用,建议使用以下方法。
users
,您可以使用不同的API返回不同类型的users
,特定于应用程序要求。答案 2 :(得分:0)
这些用户不会在应用之间共享(如果用户注册了 移动应用程序,他只能在该应用程序中登录;所以如果他想要的话 登录他需要重新注册的另一个移动应用程序。)
在我看来,这些是三种不同的Rails应用程序。显然,应用程序没有任何共同之处,特别是没有共享数据。
答案 3 :(得分:0)
我认为选项1在您的情况下运作良好。您可以在has_many :through
和apps
之间设置users
关系,其中包含有关该特定应用程序的用户角色的信息(假设每个应用程序每个用户只有一个角色)。 / p>
使用这种方法,工作流程将与您描述的有点不同。如果用户根本没有注册(即没有存在该电子邮件的记录),他们将需要注册(电子邮件+密码),此时您将创建用户记录(使用哈希密码)并设置关联到移动应用程序。如果用户 IS 已经注册,您不希望他们再次输入新密码,您只想设置关联。这可以通过first_or_create来处理。希望这会有所帮助。