has_many через ассоциации находят count physician.id - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь получить счет (physician.id), но я получаю ошибки в рельсах.

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_count = Patient.joins(:physicians).includes(:physicians).select('count(physician.id) as count').group('patients.id').paginate(page: params[:page], per_page: 25) 

Я получаю эту ошибку, "PG::SyntaxError: ERROR: syntax error at or near "as" LINE 1: ...CT COUNT(DISTINCT count(physician.id) as count)"

не уверен, что причиной проблемы является нумерация страниц, как ее решить?

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

В вашем запросе есть ошибка опечатки. Кроме того, я думаю, нам не нужно includes в этом случае. Вы заставляете присоединиться дважды

patients_count = Patient.joins(:physicians).select('count(physicians.id) as count').group('patients.id').paginate(page: params[:page], per_page: 25) 

0 голосов
/ 04 июня 2019

При использовании атрибута в модели он должен быть во множественном числе для запроса т.е. physicians.id вместо physician.id

patients_count = Patient.joins(:physicians)
                            #.includes(:physicians)
                            .group('patients.id')
                            .select("count(physicians.id) as count")
                            .paginate(page: params[:page], per_page: 25)
...