Вопрос

У меня вопрос относительно ассоциаций в Ruby on Rails.В приложении есть проекты, пользователи, роли и группы.Проект принадлежит группе с пользователями, пользователь может принадлежать ко многим различным группам, но может иметь только одну конкретную роль в этой группе.Например:

В одной группе пользователь является владельцем проекта, а в другой группе он является писателем.

Как лучше всего реализовать это с помощью встроенных функций Rails?

Спасибо

Это было полезно?

Решение

Вот очень быстрый набор моделей, которые должны удовлетворить ваши требования:

class User < ActiveRecord::Base
  has_many :group_memberships
  has_many :groups, :through => :group_memberships
end

class GroupMembership < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
  belongs_to :group
end

class Role < ActiveRecord::Base
  has_many :group_memberships
end

class Group < ActiveRecord::Base
  has_many :group_memberships
  has_many :users, :through > :group_memberships
end

По сути, существует таблица соединений, в которой есть идентификатор пользователя, группы и роли.Я оставлю миграции в качестве упражнения для спрашивающего.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top