मुझे लगता है कि Arel v7.x ने Arel::Nodes::Case जिसका उपयोग केस स्टेटमेंट के लिए किया जा सकता है। आप इस क्वेरी को इस प्रकार फिर से लिख सकते हैं:
def case_statements
orders = Order.arel_table
Arel::Nodes::Case.
new(orders[:quantity]).
when(2).then(orders[:quantity] * 500).
when(5).then(orders[:quantity] * 450).
when(10).then(orders[:quantity] * 350)
end
orders = Order.arel_table
Order.
select(Arel.star).
select(Arel::Nodes::Sum.new(case_statements).as("total_price")).
group(orders[:user_id]).
having("total_price > ?", minimum_price).
order("total_price")