我想首先用 select 添加屬性,然后按它們排序。
label = Arel.sql(
%q(
case label
when 'x' then 1
when 'y' then 2
end
)
)
Item.all.select("*, 'x' as label").order(label)
錯誤:
ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "label" does not exist)
LINE 2: case label
uj5u.com熱心網友回復:
很難弄清楚最終結果應該是什么。您說 GROUP BY,但我看不出您要分組的內容。我猜你實際上不需要這樣做。如果您正在嘗試這樣做,您也可以按多列排序。
如果你必須使用Arel
Item.select(
Arel.star,
Arel::Nodes::Case.new(Item.arel_table[:column_name])
.when('x').then(1)
.when('y').then(2)
.as('label'))
.order('label')
否則只使用純字串,你不需要把它包裝起來Arel
Item.select("*")
.select("CASE items.column_name WHEN 'x' THEN 1 WHEN 'y' THEN 2 END AS label")
.order('label')
執行 SELECT 中的邏輯,然后按結果排序。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/464549.html
上一篇:將矩陣的元素逐個單元格系結到網格
