问题描述
class Transport::Vehicle < ApplicationRecord
has_one :driver,class_name: "Admin",foreign_key: "driver_id"
end
Transport::Vehicle.joins(:driver)
产生以下SQL查询
SELECT "transport_vehicles".* FROM "transport_vehicles" INNER JOIN "admins" ON "admins"."driver_id" = "transport_vehicles"."id" AND "admins"."deleted_at" IS NULL LIMIT $1
但是应该
SELECT "transport_vehicles".* FROM "transport_vehicles" INNER JOIN "admins" ON "admins"."id" = "transport_vehicles"."id" AND "admins"."deleted_at" IS NULL LIMIT $1
如何获取admin.id而不是admins.driver_id?
解决方法
由于您的外键在Transport :: Vehicle类上,因此应使用 belongs_to 而不是 has_one 。