0
我需要收集用戶最近的廣播標記。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')
WH ICH抱怨for SELECT DISTINCT, ORDER BY expressions must appear in select list