gpt4 book ai didi

ruby-on-rails - Group_by - Ruby/Rails + Postgres

转载 作者:行者123 更新时间:2023-11-29 11:28:00 25 4
gpt4 key购买 nike

我是 ROR 和 Postgre 的新手,我很难做到这一点。

我有一个 Working_hour 模型和一个 Merchant 模型,其中 merchant has_many working_hours 和 working_hour 属于 Merchant。商户可以在同一天有两个或更多的working_hours。

我的看法:

 <% @merchant.working_hours.order(:day).group_by(&:day).each do |dia, whs| %>
<%= t(:"date.abbr_day_names")[dia.to_i] %> :
<% whs.each do |wh| %>
<li>
<%= wh.oppening_hour.to_formatted_s(:time) %> -
<%= wh.close_hour.to_formatted_s(:time) %>
</li>
<% end %>
<% end %>

当我在按天排序的 View 中显示检索到的数据时(请注意,开放时间是无序的):

Mon: 
17:00-20:00
10:00-13:00
Tue:
18:00-21:00
10:00-13:00

我想按星期几分组,首先按星期几排序,然后按营业时间排序:

Mon: 
10:00-13:00
17:00-20:00
Tue:
10:00-13:00
18:00-21:00

但是正如您所见,目前,我正在使用 ruby​​ 层来执行会带来性能问题的操作。如何使用数据库层实现这一点?

最佳答案

快速 Postgres 示例,如果您愿意将数据存储在数据库表中(在随机创建的数据集上):

-- The query:
SELECT to_char( mytime, 'day' ) as weekday, -- example to get weekday name
extract( dow from mytime ) as weekday_num, -- example to get weekday number
format( -- format the way example output was given
'%s - %s',
date_trunc( 'hour', opening_time )::time(0), -- get opening hour (without milliseconds)
date_trunc( 'hour', closing_time )::time(0) -- get closing hour (without milliseconds)
) as working_hours
FROM mytable
GROUP BY mytime, -- to secure accurate ordering by timestamp
weekday,
working_hours
ORDER BY mytime,
working_hours;

-- Result:
weekday | weekday_num | working_hours
-----------+-------------+---------------------
monday | 1 | 08:00:00 - 17:00:00
tuesday | 2 | 08:00:00 - 16:00:00
tuesday | 2 | 08:00:00 - 17:00:00
wednesday | 3 | 08:00:00 - 12:00:00
thursday | 4 | 08:00:00 - 12:00:00
thursday | 4 | 08:00:00 - 16:00:00
friday | 5 | 08:00:00 - 15:00:00
friday | 5 | 08:00:00 - 18:00:00

可能会派上用场的 Postgres 文档链接:

https://www.postgresql.org/docs/current/static/functions-datetime.html https://www.postgresql.org/docs/current/static/functions-formatting.html https://www.postgresql.org/docs/current/static/functions-string.html#FUNCTIONS-STRING-FORMAT

附言希望给出一些如何在数据库中解决它的想法。

关于ruby-on-rails - Group_by - Ruby/Rails + Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com