Элемент заказа с условием - PullRequest
0 голосов
/ 25 апреля 2018

Я бы хотел заказать группы с 2 переменными (уведомления (целое число) и приоритет (целое число [1, 2, 3])).

Это порядок, которого я хочу достичь:

1.Group with notifications 
  a.Group with priority(1)
  b.Group with priority(2)
2. Group without notifications 
  a.Group with priority(1)
  b.Group with priority(2)
  c.Group with priority(3)

Какой, по вашему мнению, лучший способ сделать это?

1 Ответ

0 голосов
/ 25 апреля 2018

Сначала вы должны разделить ваш заказ по-другому. Для меня самый простой способ заказать ваши группы это так:

1. Group notified without priority(3) 
2. Group not notified without priority(3) # We also add without priority in this step to avoid duplication
3. Group With the less priority  

После этого вы строите некоторый объем и порядок по умолчанию:

class Group < ApplicationRecord
  default_scope {order(priority: asc)} 

  scope :notified, -> { where.not(notifications: 0, priority: 3) }
  scope :not_notified, -> { where(notifications: 0).where.not(priority: 3) }
  scope :not_important, -> { where(priority: 3) }

end

И, наконец, вы отображаете свои группы следующим образом:

<% @groups = Group.all %>

<% @groups.notified.each do |group| %>
  Group notified 
<% end %>

<% @groups.not_notified.each do |group| %>
  Group not notified 
<% end %>

<% @groups.not_important.each do |group| %>
  Group not important 
<% end %>
...