Как связать мою модель в рельсах между командами, пользователями и организациями? - PullRequest
0 голосов
/ 24 апреля 2018

Я делаю проект в рельсах, который позволяет нескольким пользователям быть частью организации (пользователь принадлежит только одной организации). Организация имеет несколько команд, и пользователь также может принадлежать к нескольким командам. Кроме того, в организационной части у меня были такие ассоциации.

class User < ApplicationRecord
   has_and_belongs_to_many :teams
end 

class Team < ApplicationRecord
   has_and_belongs_to_many :users
end

Моя мысль о добавлении ассоциации организаций такова.

class User < ApplicationRecord
  has_and_belongs_to_many :teams
  belongs_to :organization
end

class Organization < ApplicationRecord
  has_many :users
  has_many :teams
end

class Team < ApplicationRecord
  has_and_belongs_to_many :users
  belongs_to :organization
end

Есть ли другие способы, чтобы я мог добавить организационную модель, которая также будет полезна для будущих целей?

Спасибо.

1 Ответ

0 голосов
/ 24 апреля 2018

Я бы рекомендовал отказаться от отношения has_and_belongs_to_many в пользу has_many through:, что позволит вам иметь большую гибкость с моделью Organization.

Примерно так:

class User < ApplicationRecord
  has_many :organizations
  has_many :teams, through: :organizations
end

class Team < ApplicationRecord
  has_many :organizations
  has_many :users, through: :organizations
end

class Organization < ApplicationRecord
  belongs_to :users
  belongs_to :teams
end

Таким образом, ваши ассоциации четко определены между тремя моделями без магии Rails has_and_belongs_to_many. Это позволяет использовать модель Organization.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...