Я пытаюсь найти запрос для отношения «многие ко многим» с фильтрацией определенного поля в таблице «многие ко многим» при упорядочении по полю в связанной таблице.
Как мне получить все активные firm_emps конкретной фирмы и упорядочить firm_emps по имени пользователя?
user.rb
Class User < ApplicationRecord
has_many :firm_emps, :dependent => :destroy
has_many :firms, through: :firm_emps
end
user.rb файл миграции
...
t.string :name
t.boolean :active
...
firm_emp.rb
Class FirmEmp < ApplicationRecord
belongs_to :firm
belongs_to :user
end
файл миграции firm_emp.rb
...
t.belongs_to :user, index: true
t.belongs_to :firm, index: true
t.boolean :admin, default: false
t.boolean :active, default: true
...
firm.rb
Class Firm < ApplicationRecord
has_many :firm_emps, dependent: :destroy
has_many :users, through: :firm_emps
end
файл миграции Firm.rb
...
t.string :full_name
t.boolean :active
...
Я пытался выполнить следующие запросы в консоли rails:
f = Firm.first
f.users.where(active: true).order('users.name asc')
# But this filters on User's table field active: true and not the FirmEmps table field active: true
f.users.joins(:firmemps).where(active: true).order('users.name asc')
# Just doesn't work
f.firm_emps.active.order('firm_emps.active')
# But i can't order by user's field 'name'
РЕДАКТИРОВАТЬ: Ответы @ PragyaSriharsh и @ ArunEapachen сработали.