У меня есть модель транспортного средства, которая имеет has_one
связь с QrCode
.Я хочу выбрать конкретный столбец qr_code
вместо того, чтобы выбирать все столбцы и отображать одно значение
Я пробовал следующий код.
vehicle = Vehicle.first
code = vehicle.qr_code.pluck(:value)
Но это неверный запрос
Следующий код будет иметь желаемое значение.
code = vehicle.qr_code.value
Но построение запроса по этому коду:
SELECT "qr_codes".* FROM "qr_codes" WHERE "qr_codes"."codeable_id" = $1 AND "qr_codes"."codeable_type" = $2 LIMIT 1 [["codeable_id", 1], ["codeable_type", "Vehicle"]]
Это дорого, поскольку он выбирает все значения столбцов и в таблице qr_codes есть несколько столбцов, в которых хранятся огромные данные.
Ниже приведена реализация кода
class Vehicle < ActiveRecord::Base
has_one :qr_code, as: :codeable
end
class QrCode < ActiveRecord::Base
belongs_to :codeable, polymorphic: true
end
не ожидаемый запрос:
SELECT "qr_codes".* FROM "qr_codes" WHERE "qr_codes"."codeable_id" = $1 AND "qr_codes"."codeable_type" = $2 LIMIT 1 [["codeable_id", 1], ["codeable_type", "Vehicle"]]
ожидаемый запрос:
SELECT "qr_codes".value FROM "qr_codes" WHERE "qr_codes"."codeable_id" = $1 AND "qr_codes"."codeable_type" = $2 LIMIT 1 [["codeable_id", 1], ["codeable_type", "Vehicle"]]