Как сделать ассоциацию разного рода ролей (агент и клиент) - PullRequest
1 голос
/ 02 ноября 2019

Я использую devise в качестве модели пользователя с rolify для ролей

У пользователя есть одна роль, называемая «клиент»

У пользователя есть одна роль, называемая «агент»

Я хочу создать ассоциацию, подобную этой

class User < ApplicationRecord
  rolify
  has_many :agents # if user role is client will get all agents
  has_many :clients # if user role is agent will get all clients
end

Как создать вышеуказанные ассоциации. Пожалуйста, помогите мне. Спасибо

1 Ответ

0 голосов
/ 02 ноября 2019

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

class User < ApplicationRecord
  rolify
  has_many :user_agents
  has_many :agents, through: :user_agents # if user role is client will get all agents
  has_many :user_clients, class_name: 'UserAgent', foreign_key: :agent_id
  has_many :clients, source: :user, through: :user_clients # if user role is agent will get all clients
end
# field: user_id and agent_id
class UserAgent < ApplicationRecord
  belongs_to :user
  belongs_to :agent, class_name: 'User'
end

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