Rails应用程序作为多个应用程序的后端

时间:2015-06-23 09:53:11

标签: ruby-on-rails

我们正在开发一个Rails应用程序,它将作为多个应用程序的后端。 Rails应用程序将有一个Web CMS,允许管理员用户管理他们的移动应用程序(一个管理员用户可以拥有1..N移动应用程序)。

相同的Rails应用也可以作为这些移动应用的API。移动应用程序彼此完全分离,不共享任何数据。我们有不同角色的用户( global_admin 在CMS中管理他的应用, place_manager 管理他在CMS中的应用中的位置,以及用户移动应用程序)。这些用户不会在应用之间共享(如果用户在移动应用中注册,他将能够在该应用中登录 ;因此,如果他想要登录其他移动应用,则需要再次注册。)

实现这一目标的最佳方法是什么?我们正在考虑:

  • 选项1:我们可以拥有一个User模型,在不同的应用上具有不同的角色(应用1上的global_admin,应用2的user,应用上的manager 3 ...)。如果用户注册app 1,则会创建一条记录,如果他注册了app 2,我们只会为其添加一个角色,但他认为他创建了一个新帐户。
  • 选项2:我们可以为每个应用创建每个用户的记录(删除电子邮件字段的唯一性约束)
  • 选项X:想法?

提前谢谢

4 个答案:

答案 0 :(得分:2)

API / API用户场景看起来像多租户的情况,其中每个应用程序作为单独的实例运行。对于数据库级别的多租户,您可以查看类似Apartment的内容,或者为应用级别多租户查看Milia

数据库级别通常更易于管理,但您需要针对全局管理要求的变通方法。

答案 1 :(得分:1)

如果您想为多个移动应用使用单个rails应用,建议使用以下方法。

  1. 对于users,您可以使用不同的API返回不同类型的users,特定于应用程序要求。
  2. 使用STI区分每个应用的用户(这样,您只能为用户提供一个表,但不同的模型)

答案 2 :(得分:0)

  

这些用户不会在应用之间共享(如果用户注册了   移动应用程序,他只能在该应用程序中登录;所以如果他想要的话   登录他需要重新注册的另一个移动应用程序。)

在我看来,这些是三种不同的Rails应用程序。显然,应用程序没有任何共同之处,特别是没有共享数据。

答案 3 :(得分:0)

我认为选项1在您的情况下运作良好。您可以在has_many :throughapps之间设置users关系,其中包含有关该特定应用程序的用户角色的信息(假设每个应用程序每个用户只有一个角色)。 / p>

使用这种方法,工作流程将与您描述的有点不同。如果用户根本没有注册(即没有存在该电子邮件的记录),他们将需要注册(电子邮件+密码),此时您将创建用户记录(使用哈希密码)并设置关联到移动应用程序。如果用户 IS 已经注册,您不希望他们再次输入新密码,您只想设置关联。这可以通过first_or_create来处理。希望这会有所帮助。