Общее количество заказов по категориям - Рельсы - PullRequest
0 голосов
/ 21 июня 2019

Моя группа по бронированию имеет много заказов.Резервирование содержит столбец category, где данные могут быть «взрослыми», «child_infant» или child_normal.

Теперь я хочу подсчитать все итоговые%% child% и отобразить их в моей таблице представления индекса

Я не был уверен, можно ли это сделать в одну строку или мне нужно использовать прицел, вот где я застрял.

BookingGroup модель

  def search_by_category
    bookings.visible.map(&:category).inject(:+)
  end

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Мы можем использовать LIKE так же, как в SQL с активной записью

В вашей BookingGroup модели

def search_by_category
    bookings.visible.where('category LIKE ?', '%child%').size
end

Но, если вы сделаете это для многих booking_groups, вашкод будет иметь N+1 вопрос запросов.Вы можете использовать нетерпеливую нагрузку в вашем контроллере

@booking_groups = BookingGroup.joins(:bookings).select('booking_groups.*', 'count(*) as total_bookings').where('bookings.category LIKE ?', '%child%').group(:id)

Тогда вы можете

@booking_groups.first.total_bookings
0 голосов
/ 21 июня 2019

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

bookings.visible.where("category LIKE ?", "child%").count

bookings.visible.where(category: ["child_infant", "child_normal"]).count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...