Насколько я понимаю, у вас есть пользователь, который может принадлежать компании, и если это так, он может фактически управлять им.
Вы можете настроить Group
, чтобы иметь, например, company_id
, user_id
и поле admin
(таким образом, вы узнаете, какие пользователи принадлежат какой компании, и если они также управляют этой компанией)
Чтобы пользователь принадлежал только одной компании, вы можете добавить проверку уникальности в двух столбцах (company_id
и user_id
)
Вы можете получить администраторов одной компании, выполнив
class Company < ActiveRecord::Base
has_many :groups
has_many :users, through: :groups
has_many :administrators, through: :groups, source: :user, conditions: ["groups.admin = ?", true]
end
и звоните company.administrators
или company.users
для всех пользователей
Вы также можете сделать что-то вроде
class User < ActiveRecord::Base
has_one :group
has_one :company, through: :group
has_one :administered_company, through: :group, source: :company, conditions: ["groups.admin = ?", true]
end
, чтобы вы могли звонить user.company
или user.administered_company
и так далее ...