【问题标题】:How to make a ChartKick line chart with Rails associations?如何使用 Rails 关联制作 ChartKick 折线图?
【发布时间】:2020-10-14 20:56:16
【问题描述】:

我正在努力格式化我的 ruby​​ 代码以获得我想要的图表。我正在制作一个带有几层表之间关联的 Rails 6 应用程序。
我有:

  • 每个标题都有_一篇文章
  • 每篇文章都有_一种情感
  • 情绪表有一个分数列

我要构建的图表只是 X 轴 = Headline.created_at,Y 轴 header.article.sentiment.score

控制器

@headlines = Headline.where("created_at = ?", Date.today)

查看代码

<%= line_chart @headlines.group_by_day(:created_at).count %>

如何让 Y 轴成为“分数”而不是“计数”?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby chartkick


    【解决方案1】:

    这取决于您如何设置模型之间的关系。如果你在HeadlineSentiment 有这样的关系

    class Headline
      has_one :article
      has_one :sentiment, through: :article
    end
    

    你可以简单地做这样的事情

    @headlines.each_with_object({}) do |headline, result|
      result[headline.id] = headline.sentiment&.score
    end
    # { 1: 2, 3: 4}
    

    您应该在初始查询中包含articlesentiment,否则您将拥有这样的n+1 query

    Headline.includes(:article, :sentiment).where("created_at = ?", Date.today)
    

    可能有一种更高效的方式在 SQL 中对内联进行分组,但应该这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多