1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Count The Number Of Records By Attribute as a Rails til

This commit is contained in:
jbranchaud
2021-03-09 19:36:14 -06:00
parent 0ec8b98d00
commit 66a8dbb2dc
2 changed files with 22 additions and 1 deletions

View File

@@ -0,0 +1,20 @@
# Count The Number Of Records By Attribute
In [Count How Many Records There Are Of Each
Type](postgres/count-how-many-records-there-are-of-each-type.md), I walked
through how to use SQL (in PostgreSQL) to get a count of how many records there
are with each unique value in a given column. This is something I tend to do
with a `type` or `status` column.
We can ask the same question with Rails, with very little code. It produces a
nearly identical query and the same results.
```ruby
> Book.group(:status).count
#=> { nil => 123, "published" => 611, "draft" => 364, "review" => 239 }
```
We've picked the `Book` model and we want it to group books by their `status`.
Tacking on the `#count` at the end tells it to apply the `count` aggregate. The
result is a hash of each unique value of the specified attribute (`status`)
paired with the count.