Я пишу код, который использует несколько самореференциальных моделей, которые я хотел бы иметь, чтобы сопоставлять таблицу соединений, поскольку они связаны через нее ,Множество самореферентных has_many: через ассоциации в Rails 4.
Модели выглядят как
User.rb:
class User < ActiveRecord::Base
has_many :appointments
has_many :students, through: :appointments
has_many :teachers, through: :appointments
end
Appointment.rb:
class Appointment < ActiveRecord::Base
belongs_to :student, class_name: User
belongs_to :teacher, class_name: User
end
К сожалению, запрос генерируется Rails является:
SELECT "users".* FROM "users" INNER JOIN "appointments" ON "users"."id" = "appointments"."student_id" WHERE "appointments"."user_id" = $1
Что вызывает ошибку, потому что параметр Назначения не имеет параметра user_id.
Я уже пробовал указать опцию foreign_key
, но это ничего не сделало. Любые другие способы я могу решить это элегантно?
спасибо.
«... запрос, созданный Rails ...» - для какого звонка? Что вы сделали, чтобы получить этот запрос? Вы не указали, но было бы проще понять с первого взгляда, какой вызов вы пытаетесь. – coreyward
Я пробовал 'User.first.students'. – Alex
Вы можете показать свою попытку указать параметр внешнего ключа? –