distinct
принимает только логическое значение в качестве параметра, чтобы указать, должны ли записи быть уникальными или нет.Так что distinct(:viewable_id)
эквивалентно distinct(true)
и не делает то, что вы хотите.Вместо использования distinct
следует использовать group
, который возвращает массив с различными записями, основанными на атрибуте группы.Чтобы вернуть самый последний, кроме порядка (с order
) по created_at
, вам необходимо добавить поля в group
:
@views = StoreView
.order(viewable_id: :desc, viewable_type: :desc, created_at: :desc)
.group(:viewable_id, :viewable_type)
Если вам нужночтобы получить возвращенные записи, упорядоченные по created_at
, вам необходимо добавить это.