ruby-on-rails - Rails ActiveRecord 查询按天排序
问题描述
我正在尝试对我的记录进行排序/排序以在 Chart.js 中显示它们
我想按升序显示周一到周日的餐单,每天有 3 种不同的餐点。如果每天都有每顿饭,这有点工作,但是如果没有订购一种饭菜,例如,日子的顺序会变得很奇怪。
这是一个没有按我预期工作的示例:
所以正如你所看到的(不要介意德语:D)开始是正确的星期一,......星期四,......星期六,这很好,但是星期五的订单(绿色的)是另一顿饭其他日子,所以星期五在星期六之后显示,但我希望它在星期四和星期六之间显示。
这是我对 ActiveRecord 的查询:
def self.weeklyVollkostOverview
where(day: Date.today.beginning_of_week..Date.today.end_of_week).where(dish_type: 0).group(:day).order("day ASC").count
end
def self.weeklySchonkostOverview
where(day: Date.today.beginning_of_week .. Date.today.end_of_week).where(dish_type: 1).group(:day).order("day ASC").count
end
def self.weeklyVegetarischOverview
where(day: Date.today.beginning_of_week .. Date.today.end_of_week).where(dish_type: 2).group(:day).order("day ASC").count
end
在我的控制器中,我正在映射结果:
@weeklyVoll = OrderCard.weeklyVollkostOverview.map { |key, value| [I18n.l(key, format: "%A", locale: :'de'), value]}
@weeklySchon = OrderCard.weeklySchonkostOverview.map { |key, value| [I18n.l(key, format: "%A", locale: :'de'), value]}
@weeklyVegetarisch = OrderCard.weeklyVegetarischOverview.map { |key, value| [I18n.l(key, format: "%A", locale: :'de'), value]}
最后,我在图表中显示结果。
有什么我可以做的不同的或者更容易的吗?我知道我可以使用 Groupdate-Gem,但是日期对象和时区转换存在问题,所以我尝试手动进行。
编辑:
在我看来,变量@weeklyVoll、@weeklySchon 和@weeklyVegetarisch 用于显示图表所在的位置:
<%= column_chart [
{ name: "# Bestellungen Vollkost", data: @weeklyVoll },
{ name: "# Bestellungen Schonkost", data: @weeklySchon },
{ name: "# Bestellungen Vegetarisch", data: @weeklyVegetarisch }
],
colors: ["red", "yellow", "green"],
xtitle: "Wochentag",
ytitle: "# Bestellungen",
legend: true,
legend: "bottom",
messages: { empty: "Noch keine Daten vorhanden!" },
library: { scales: { yAxes: [{ gridLines: { display: true }, ticks: { precision: 0 } } ] }, animation: {easing: 'easeOutQuad', duration: 2500} }
%>
任何帮助表示赞赏!谢谢!
解决方案
我认为问题在于三个不同的数组。如果您要在 day/dish_type 上分组,然后在最后调用 count 它应该会给出类似['Day', 'Dish Type'] => 3
. 然后,您将不得不根据需要重新遍历和格式化。我倾向于使用each_with_object
.
OrderCard.where(day: Date.today.all_week)
.group(:day, :dish_type).count
# => ['Day', 'Dish Type'] => 3
推荐阅读
- python - 范围元类;或在包含从 A 继承的嵌套类的 B 类的 __init__ 期间更改 A 类的类变量?
- javascript - 使用 rollup-plugin-uglify 与 RollupJS rollup-plugin-multientry 捆绑时缩小文件的问题
- sql - 如何计算不同行中当前日期和上一个日期之间的差异
- java - 你如何把它从 AppCompatActivity 翻译成 Fragment
- javascript - 如何将此对象转换为数组?
- arrays - Countifs 数组公式
- c# - 在 C# 中,我如何创建一个扩展方法,该方法采用带有泛型参数的 lambda,Func
作为参数。 - javascript - 如何将对象从视图传递到控制器
- java - 根据通用类型创建对象
- acumatica - Acumatica 导入方案将默认收据更改为