Rails复杂模型关联,用户和用户团队之间的共享文档

问题描述 投票:0回答:1

我考虑到一个相对复杂的模型关联,并且想知道如何实现。本质上,这就是我想要完成的。

  • 我有一个用户模型和一个文档模型
  • 用户A可以创建一个文档。他现在是文档管理员。
    1. 然后他可以将其他个人用户添加到他的文档中,并为他们分配权限,例如:(编辑器,查看器,管理员)
    2. 他还可以创建一个团队,一组用户,并将多个团队添加到他的文档中。用户A添加到其文档的小组中的每个用户也将具有一定级别的权限。一个用户可以属于多个团队。

我对必须设置的关联有些困惑。文件必须属于团队和用户吗?用户和文档都有多个团队,并且团队有很多用户。我可能需要团队和用户之间的联接表(成员)。

ruby-on-rails join model rails-activerecord
1个回答
0
投票

有很多解决方法,但是乍一看,我建议使用polymorphic associations

我还没有测试下面的内容,但是我们的想法是,您将使用多态关联来关联文档的查看者和编辑者。

class User
  belongs_to :team, optional: true

  has_many :documents
end

class Team
  has_many :users
end

class Document
  belongs_to :owner, class_name: :User

  has_many :documents_viewers
  has_many :viewers, through: :documents_viewers, source: :viewerable
end

# the joins table
class DocumentsViewer
  enum permissions: %w[view edit]

  belongs_to :document
  belongs_to :viewerable, polymorphic: true
end
© www.soinside.com 2019 - 2024. All rights reserved.