Мне нужно собрать последние теги вещания для пользователей.Rails-запрос для возврата отдельных ресурсов на основе связанного ресурса
У меня есть эти модели созданы
class Broadcast < AR::Base
belongs_to :user
has_many :broadcast_tags
has_many :tags, through: :broadcast_tags
end
class Tag < AR::Base
has_many :broadcast_tags
has_many :broadcasts, through: :broadcast_tags
end
class BT < AR::Base
belongs_to :broadcast
belongs_to :tag
end
Я хотел бы найти метки из передач пользователей в прошлом месяце
Я полагаю, что я должен присоединиться к трансляции помечать, а затем найти все тег используются в этих передачах
Tag.joins(:broadcasts).where(
broadcasts: { user_id: current_user.id, created_at: Time.current.all_month }
)
Это возвращает отдельные теги несколько раз, если пользователь использовал их в более чем одном недавнем эфире. Я хотел бы получать только те или иные теги. Что, конечно, отлично работает, если я просто назову разным.
Tag.joins(:broadcasts).where(
broadcasts: { user_id: current_user.id, created_at: Time.current.all_month }
).distinct
Мне также необходимо заказать эти различные метки по порядку, в котором они находятся в трансляциях.
Так что если
- последняя трансляция имеет метки 10, 9, 6, 1
- предпоследний имеет метки 9, 2, 1
Я хотел теги к будут возвращены в таком порядке
10, 9, 6, 1, 2
Я попытался .order('broadcasts.created_at DESC')
ВГ ич жалуется for SELECT DISTINCT, ORDER BY expressions must appear in select list