Подсчитывать одинаковые значения в массиве, используя каждый Ruby Rails - PullRequest
0 голосов
/ 19 февраля 2020

Я выполняю запрос в банке контроллером и получаю данные в переменной, когда выполнение каждого из них возвращает массив, я хотел подсчитать, сколько раз повторяется один и тот же параметр для создания счетчика может помочь мне следовать моему коду.

Rails 3.2, ruby 2.3

результаты моего запроса .. с postgresql

#<tickets title: "any text any first register ", updated_at: "2018-01-30 18:38:58", company: 89869> 

#<tickets title: "any text any second register ", updated_at: "2018-06-25 20:18:20", company: 99991> 

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

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Для заданного значения c можно использовать метод count:

date = Date.today # Put your date here
tickets.count { |ticket| ticket.updated_at.to_date == date } 

UPD

Группировать билеты по дате и получать результат из га sh. Я не уверен, работает ли он в Rails 3.2

date = Date.today # Put your date here
Ticket.group('date(updated_at)').size[date]
1 голос
/ 19 февраля 2020

Мой обычный подход - использовать group_by и transform_values.

counts_by_date = tickets.group_by do |ticket|
  ticket.updated.at.strftime("%Y/%m/%d") # get Year/Month/Day as string
end.transform_values(&:count)

С Ruby 2,7 мы получаем tally что немного короче:

counts_by_date = tickets.map do |ticket|
  ticket.updated.at.strftime("%Y/%m/%d") # get Year/Month/Day as string
end.tally
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...