50 Experience
0 Lessons Completed
0 Questions Solved


I have a relatively complex model association in mind, and was wondering how I could accomplish it. In essence, this is what i want to accomplish.

  • I have a User model, and a Document model
  • User A can create a document. He is now the document admin.
  • He can then add other individual users to his document, and assign them permissions, ex: (Editor, Viewer, Admins)
  • He can also create a team, a group of users, and add multiple teams to his document. Each user on a team that User A has added to his document will also have a level of permissions. A user can belong to many teams.

I am a little bit confused about the associations I will have to setup. This is the code I have so far, which has not incorporated the team aspect:

class User < ApplicationRecord
  has_many :participations
  has_many :documents, through: :participations

class Document < ApplicationRecord
  has_many :participations
  has_many :users, through: :participations

class Participation < ApplicationRecord
  belongs_to :user
  belongs_to :document
  enum role: [ :admin, :editor, :viewer ]