我正在开发一个需要基于角色的权限的 Rails 应用程序(我们称之为“隐藏”应用程序),但该应用程序不会处理用户身份验证。主应用程序设置一个加密的 cookie,而隐藏应用程序将其用作身份验证的证据。
隐藏应用需要实现多种角色;管理员、项目经理、编辑等。我正在使用一个授权插件,它创建一个roles
表和一个users_roles
表,并使用一个表来使用has_many
用户表和角色表之间的关系users_roles
。到目前为止所有漂亮的香草东西。
挑战在于主应用程序已经有一个users
表和一个users_roles
表。我有一个使用 Main 应用程序数据库(创建自定义连接)的 Main::User 模型,但是当尝试通过创建角色来利用授权基础结构时,操作失败,因为 ActiveRecord 正在使用来自 Main::User 的连接信息表,它尝试更新users_roles
主应用程序中的表(这是不允许的)。我什至尝试删除 habtm 规范并使用带有 :through 选项的 has_many 宏来指定连接表,但 ActiveRecord 仍然使用 Main 数据库,因为连接是通过 Main::User 模型建立的。
下一步是实现 Rails 秘诀 15“连接到多个数据库”,但我缺少的部分是如何使我的本地参考模型 UsersReference 自动引用users
主应用程序的表。配方提到,“这个解决方案当然需要在 product_references 表中创建必要的行,以匹配我们在备用数据库中拥有的任何产品。这可以批量完成,也可以在运行时自动完成。” 我宁愿不必维护双副本——有超过 425,000 个用户并且他们的状态一直在变化,所以进行批量更新的想法不是很受欢迎。
理想情况下,我希望配方中的 UsersReference 模型充当users
表的代表。我想这将涉及在运行时自动从表中获取行users
,如配方中所述。有没有人有这样做或类似的经验?我非常感谢你的想法。