我正在努力格式化我的ruby代码,以获得我想要的图表类型。我正在制作一个Rails6应用程序,它在表之间有几层关联
我有:
- 每个标题都有一篇文章
- 每篇文章都有一种情感(_O(
- 情绪表有一个分数栏
我想要构建的图表将只是X轴=标题.created_at,Y轴标题.article.sentiment.score
控制器
@headlines = Headline.where("created_at = ?", Date.today)
查看代码
<%= line_chart @headlines.group_by_day(:created_at).count %>
如何将Y轴设为"score"而不是"count"?
谢谢。
这取决于如何设置模型的关系。如果您在Headline
到Sentiment
中有类似的关系
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}
您应该在初始查询中包括article
和sentiment
,否则您将有一个类似的n+1查询
Headline.includes(:article, :sentiment).where("created_at = ?", Date.today)
在SQL中可能有一种更高性能的内联分组方式,但这是应该的