Active Record: How to select rows based on the number of items in an array column (PostgreSQL)

Context

You have a column in your table that is used as an array , like this:

 t.string 'ids', array: true

And you want to select all records that have more than N elements in the array

Solution

In PostgreSQL, you can use cardinality to achieve this:

Model.where("cardinality(ids) > 5")