在Rails中联接两个表,该表被称为has_one:“ ..”,class_name:“ ...”

问题描述

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