【问题标题】:Manipulate value of ActiveRecord request in Chartkick在 Chartkick 中操作 ActiveRecord 请求的值
【发布时间】:2014-06-18 14:45:30
【问题描述】:

我喜欢使用chartkick 来可视化一些数据。我有一个购买模型,其中包含许多购买。

class Purchase < ActiveRecord::Base
  attr_accessible :category, :price, :product, :purchase_type
  def invert_price
    self.price.abs
  end
end

标准图表如下所示:

<%= bar_chart Purchase.group(:category).sum(:price) %>

但我的 :price 记录是负面的。我只需要一个解决方案如何获得倒置价格 (-price) 或价格的绝对值 (price.abs)。

尝试在购买模型中创建方法不起作用,因为它无法在 SQL 查询中得到解决。

class Purchase < ActiveRecord::Base
  attr_accessible :category, :price, :product, :purchase_type

  def invert_price
    self.price.abs
  end

  def invert_price
    self.price.abs
  end
end

错误:

Mysql2::Error: Unknown column 'invert_price' in 'field list

编写自己的 SQL 查询可以返回正确的结果,但之后 chartkick 为空。

<%= bar_chart Purchase.select("ABS(SUM(`candystore_purchases`.`price`)) AS sum_price, category AS category").group(:category) %> 

任何想法,如何处理?

【问题讨论】:

    标签: ruby-on-rails activerecord chartkick


    【解决方案1】:

    试试:

    <%= bar_chart Purchase.group(:category).sum("ABS(price)") %>
    

    【讨论】:

    • SELECT SUM(ABS(price)) AS sum_abs_price, category AS category FROM 'purchases' GROUP BY category 是生成的 sql 查询,正是我正在寻找的。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2018-05-26
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多