我正在试图弄清楚如何为我的rails项目设置Document模型的关系/关联。我有一个用户模型,用户可以互相交友(友谊模型)。
现在,我希望用户能够邀请(允许访问)某些朋友来修改和编辑这些类似于Google文档的文档。
这是我目前解决这个问题的方法:
创建一个名为“group”的新关系模型,基本上是朋友的一个子集。文档属于用户,文档属于组。然后,用户可以邀请他们的朋友加入这些组关系,并且可以通过这些组访问/修改文档。
因此,用户有很多组,组属于很多用户。
我的问题:
答案 0 :(得分:0)
您可以考虑使用“会员”联接表。所以:
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
可能会有更多想法。