Модель отношений ActiveRecord с пользователями и организациями

Я пытаюсь выяснить, каков наилучший логический способ моделирования отношений между моделями. У меня 4 модели:

  1. пользователь
  2. Товар
  3. SlackTeam
  4. организация

Здесь у пользователя много продуктов, SlackTeam и организаций, а SlackTeam принадлежит пользователю и имеет одну организацию. Организация должна принадлежать Пользователю и SlackTeam. Я логически правильно здесь?

Рабочий процесс следующий:

  • Пользователи могут войти в систему с SlackTeam (который автоматически создает организацию)
  • другие пользователи из той же команды Slack будут добавлены в ту же организацию, как только они свяжут свою учетную запись со Slack
  • если пользователи подключены ко многим командам SlackTeams (и организациям), они могут фильтровать, чтобы видеть продукты всех организаций, частью которых они являются, или только одной.

Я что-то пропустил?

1 ответ

class User
  has_many :users_ogranizations
  has_many :organizations, through: :users_organizations
  has_many :products, through: :organizations
end

class Product
  belongs_to :organization
end

class Organization
  has_many :users_ogranizations
  has_many :users, through: :users_organizations
  has_many :products
end

class UsersOrganization
  belongs_to :user
  belongs_to :organization
end

# i'd rather use slack profile than team, because Organization and Team 
# already connotes the same thing.
class SlackProfile

end

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

current_user.products.where(organization: Organization.last)
Другие вопросы по тегам