Итак, я пытаюсь отфильтровать результаты, используя условие WHERE, но оно не работает.
class Physician < ApplicationRecord
has_many :appointments
has_many :patients, through: :appointments
end
class Appointment < ApplicationRecord
belongs_to :physician
belongs_to :patient
end
class Patient < ApplicationRecord
has_many :appointments
has_many :physicians, through: :appointments
end
и что я здесь делаю:
patients = Patient.joins(:physicians).includes(:physicians).where(:appointments => {:sick => true })
Тем не менее, я получаю следующее:
"results": {
"patient": {
"id": 2,
"patient_name": "Rob"
},
"physicians": [
{
"id": 4,
"physicians_name":...
"sick":false
... ,
{
"id": 7,
"physicians_name":...
"sick":true
...
... ,
{
"id": 7,
"physicians_name":...
"sick":false
...
]
}
Итак, как вы заметили, я НЕ принимаю только врачей с больными = правда. какие-либо предложения?
Обновление :
Это мой сериализатор
class PatientSerializer < ActiveModel::Serializer
attributes :records
def records
{ info: records_info }
end
def records_info
object.appointments.map do |a|
a.attributes.merge(a.physician.attributes)
end
конец
конец