В качестве примера у меня есть Доктора со многими Назначениями с Пациентами. Я хочу, чтобы получить все пациенты, которые в данный момент активны в назначении:Получить подмножество отношений «многие ко многим» в Rails/ActiveModel
class Doctor < ActiveRecord::Base
attr_accessible :name
has_many :appointments
has_many :patients, through: :appointments
end
И модель Назначение:
class Appointment < ActiveRecord::Base
attr_accessible :patient_id, :began_at, :finished_at, :doctor_id
belongs_to :patient
belongs_to :doctor
scope :active, where(finished_at: nil)
end
Теперь я могу сделать что-то вроде doctor.appointments.active
, чтобы получить активные текущие назначения. Но я хочу, чтобы пациенты легко справились с этими назначениями. Есть ли способ сделать что-то вроде doctor.appointments.active.patients
? Или у doctor.patients.active
было бы больше смысла.
Могу ли я добавить область active
в линию has_many :patients
в классе Doctor?
это странно не работает. SQL, который он выводит, имеет смысл, но я возвращаю пустой набор, даже если назначение. Finished_at на самом деле 'nil' –
Поле' finished_at' является 'nil' в Ruby. Однако, когда я перехожу к sqlite3, поле пусто. Я не знаю, что это такое. Если я делаю 'sqlite> select * из встреч, где finished_at = null;' я ничего не получаю. Даже если я делаю 'where finished_at = ''', я тоже ничего не получаю. –
Если я набираю следующее в 'rails console', я вернусь к встрече, странно, как' nil' работает в Rails, но не в sqlite3: 'Appointment.where (finished_at: nil)' –