У меня есть три модели: Пользователь, Регистрант, Программа.
Регистрант - это таблица соединения между Пользователем и Программой, которая содержит user_id
, program_id
и status
, что является перечислением.
class User < ApplicationRecord
has_many :registrants, dependent: :destroy
has_many :programs, through: :registrants
end
class Registrant < ApplicationRecord
belongs_to :user
belongs_to :program
enum status: {
enrolled: 1,
unenrolled: 2,
instructor: 3,
passed: 4,
failed: 5
}
scope :active, -> { where(status: [:enrolled, :instructor]) }
end
class Program < ApplicationRecord
has_many :registrants, dependent: :destroy
has_many :users, through: :registrants
end
Я хотел бы иметь возможность извлекать только те записи из объединяемой таблицы, которые имеют статус enum: enrolled или: instructor, так что я могу сделать что-то вроде:
program.registrants.active.users
Как мне выполнить sh это?