【问题标题】:Figuring out relationships for a Document model that can be editted by multiple users找出可以由多个用户编辑的文档模型的关系
【发布时间】:2012-04-07 19:39:52
【问题描述】:

我正在尝试弄清楚如何为我的 rails 项目的 Document 模型设置关系/关联。我有一个用户模型,用户可以互相加为好友(友谊模型)。

现在我希望用户能够邀请(授予访问权限)某些朋友修改和编辑这些文档,类似于 Google Docs。

这是我目前解决这个问题的方法:

创建一个名为“组”的新关系模型,本质上是朋友的子集。文档属于一个用户,文档属于一个组。然后,用户可以邀请他们的朋友加入这些群组关系,并且可以通过这些群组访问/修改文档。

因此,用户有很多组,组属于很多用户。

我的问题:

  1. 有没有更好的方法来解决这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 associations


    【解决方案1】:

    您可以考虑使用“Membership”连接表。所以:

    Group >- Membership -< User
    

    ...因为您的要求是某些用户将具有其他人不具备的能力(编辑)。那里有各种各样的选择,例如 STI,它会给你:

    class Membership < ActiveRecord::Base
      ...general membership functions
    end
    
    class Editor < Membership
       ...editor specific code...
    end
    
    class Reviewer < Membership
       ...reviewer specific code...
    end
    

    还有一个类似的控制器类

    class MembershipController
      def create invitation
        if invitation.for_editor?
          # assuming invitation has one group, and group_memberships method that returns group.memberships
          invitation.group_memberships.create! user: current_user
        else
          invitation.group_memberships.create! user: current_user
        end
      end
    end
    

    例如,取决于您对 STI 的看法。

    https://github.com/scambra/devise_invitable

    可能有更多想法。

    【讨论】:

    • 谢谢,这对我的问题有所启发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多