使用 select 从不同的 table 获取列值

Get column value from a different table using select

我在我的交互器上有这个查询:

 Variant.where(code: context.codes)
        .joins("LEFT OUTER JOIN prices p
                ON p.variant_id = variants.id")
        .select("code,
                 actual_price,
                 selling_price,
                 p.cost")

哪个returns:

#<Interactor::Context codes=["PRDCTA-V1", "PRDCTA-V2"], body=[#<Variant id: nil, selling_price: nil, code: "PRDCTA-V2", actual_price: nil>,
#<Variant id: nil, selling_price: #<BigDecimal:7ff1d13b9118,'0.1E3',9(18)>, code: "PRDCTA-V1", actual_price: nil>]

我不知道为什么 prices table 中的 p.cost 没有出现,这意味着我的 select 是错误的。我试过改成costprices.cost还是不行。

我的预期输出应该是

[#<Variant id: nil, selling_price: nil, code: "PRDCTA-V2", actual_price: nil, cost:{value here}>,

试试这个,在 select 中为成本分配一个别名

p.cost AS price_cost

然后通过variants.first.price_cost

获取

或者,只需从 attributes

获取它
variants.first.attributes['cost']

将return成本。

希望对您有所帮助!