Я хочу заказать has_many through
отношения на колонке в таблице черезрельсы 5 has_many через порядок на столе через
class DoctorProfile
has_many :doctor_specialties
has_many :specialties, through: :doctor_specialties
class Specialty
has_many :doctor_specialties
has_many :doctor_profiles, through: :doctor_specialties
class DoctorSpecialty
belongs_to :doctor_profile
belongs_to :specialty
Я хотел бы врач специальностей, которые можно заказать в колонке ordinal
на DoctorSpecialty
. В частности, это происходит ошибка при использовании includes
DoctorProfile.includes(:specialties).all
Я попытался
has_many :specialties, -> { order 'doctor_specialties.ordinal' }, through: :doctor_specialties
DoctorProfile Load (0.6ms) SELECT "doctor_profiles".* FROM "doctor_profiles" ORDER BY "doctor_profiles"."id" ASC LIMIT $1 [["LIMIT", 1]]
DoctorSpecialty Load (0.8ms) SELECT "doctor_specialties".* FROM "doctor_specialties" WHERE "doctor_specialties"."doctor_profile_id" = 1
Specialty Load (0.4ms) SELECT "specialties".* FROM "specialties" WHERE "specialties"."id" = 69 ORDER BY doctor_specialties.ordinal
и receieve отсутствующий ОТ -clause ошибки PG::UndefinedTable: ERROR: missing FROM-clause entry for table "doctor_specialties"
Как я могу определить порядок на проходе, так что специальности возвращаются в порядке возрастания?
Примечание:
Я был в состоянии получить эту работу, добавив default_scope
к DoctorSpecialty
default_scope { order('ordinal ASC') }
Тем не менее, я все еще интересно, если есть способ сделать это has_many through
Что такое SQL, который сгенерирован? –
@DavidAldridge добавил SQL – user2954587