Jestem całkiem nowy dla ROR i Postgre i mam problemy z osiągnięciem tego.Group_by - Ruby/Rails + Postgres
Mam model Working_hour i model handlowca, gdzie kupiec ma wiele working_hours i working_hour przynależnych do Merchant. Kupiec może mieć dwie godziny pracy na ten dzień.
Moim zdaniem:
<% @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 %>
Kiedy wyświetlane w widoku zamówionej przez dzień dane pobierane są (zauważ, że godziny otwarcia są nieuporządkowane):
Mon:
17:00-20:00
10:00-13:00
Tue:
18:00-21:00
10:00-13:00
Chcę grupy przez dzień tygodnia i zamawianie najpierw przez dzień tygodnia i drugie przez godzina otwarcia:
Mon:
10:00-13:00
17:00-20:00
Tue:
10:00-13:00
18:00-21:00
Ale jak widać, obecnie używam warstwy ruby, aby to zrobić, co powoduje problemy z wydajnością. Jak osiągnąć to za pomocą warstwy bazy danych?
Spróbuj wyszukać - postgres grupa przez tydzień - miałem ten sam problem z mysql i po przeczytaniu kilka artykułów potem dowiedziałem się więcej z sql i zrobiłem to, a następnie w szynach jej po prostu zwyczaj wybierz metodę na poziomie klasy ... –
Czy masz jakiś 'default_scope', który miesza się z zamówieniem? – Pavan
Nie @Pavan. Brak default_scope. – user1301037