У меня есть приложение Ruby on Rails, настроенное так:
Модель пользователя
has_and_belongs_to_many :roles
Ролевая модель
has_many :transactions
has_and_belongs_to_many :users
Модель транзакции
belongs_to :role
Это означает, что используется таблица соединения с именем roles_users
, а также означает, что пользователь может видеть только транзакции, которые были ему назначены через роли, пример использования:
user = User.find(1)
transactions = user.roles.first.transactions
Это вернет транзакции, связанные с первой ролью, назначенной пользователю. Если пользователю назначено 2 роли, на данный момент, чтобы получить транзакции, связанные со второй ролью, я бы сделал:
transactions = user.roles.last.transactions
Я в основном пытаюсь найти способ настроить связь, чтобы я мог получить транзакции пользователя через что-то вроде этого на основе ролей, определенных в ассоциации между пользователем и ролями:
user = User.find(1)
transactions = user.transactions
Я не уверен, возможно ли это? Я надеюсь, вы понимаете, что я пытаюсь сделать.