0

鉴于以下选择:

SELECT 
  COUNT(*) AS total,
  SUM(CASE approved WHEN 't' THEN 1 ELSE 0 END) AS num_approved,
  SUM(CASE soft_delete WHEN 't' THEN 1 ELSE 0 END) AS num_deleted
FROM model_name;

我如何将其转换为我的class ModelName定义中的某些内容,以便我可以在我的 Rails 应用程序中检索totalnum_approved和的值?num_deleted我对将数字置于 Ruby 级别的任何输出(数组、哈希、ModelName 对象上的访问器)感到满意。

4

1 回答 1

1
result = ModelName.select("
  COUNT(*) AS total, 
  SUM(CASE approved WHEN 't' THEN 1 ELSE 0 END) AS num_approved,
  SUM(CASE soft_delete WHEN 't' THEN 1 ELSE 0 END) AS num_deleted
").first

irb(main):278:0> result.total
=> 3041
irb(main):279:0> result.num_approved
=> 199464763
irb(main):280:0> result.num_deleted
=> #<BigDecimal:7fa0b7d79fd8,'0.19365329E8',9(18)>
于 2013-10-20T19:39:03.870 回答