【发布时间】:2020-02-26 10:02:16
【问题描述】:
我正在尝试使用 ARel 清理使用 MySQL 案例语句编写的 ActiveRecord 代码。我知道 Arel 能够处理 case 语句,但不知道如何使用它。
所以我有一个包含数量和 user_id(外键)列的订单表。我正在动态计算订单的价格,因为根据订购的数量有不同的定价方案。这是 AR 代码的样子:
def orders_with_price
<<-SQL
orders.*,
SUM(CASE orders.quantity
WHEN 2 THEN 500 * orders.quantity
WHEN 5 THEN 450 * orders.quantity
WHEN 10 THEN 350 * orders.quantity
END) AS total_price
SQL
end
Order.
select(orders_with_price).
group("orders.user_id").
having("total_price > ?", minimum_price).
order("total_price")
【问题讨论】:
标签: mysql ruby-on-rails activerecord arel