Тройное соединение в Ruby on Rails
-
10-07-2019 - |
Вопрос
У меня вопрос относительно ассоциаций в 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
По сути, существует таблица соединений, в которой есть идентификатор пользователя, группы и роли.Я оставлю миграции в качестве упражнения для спрашивающего.
Не связан с StackOverflow