irb(main):070:0> Moderation::Report.all.where(reportable_type: 'Message')
Moderation::Report Load (0.6ms) SELECT "reports".* FROM "reports" WHERE "reports"."reportable_type" = 'Message'
=> #<ActiveRecord::Relation [#<Moderation::Report id: 1, reason: "Insults", status: "Pending", reportable_id: 1, reportable_type: "Message", user_id: 1, ban_id: nil, created_at: "2014-02-05 11:12:29", updated_at: "2014-02-05 11:23:03">, #<Moderation::Report id: 2, reason: "spam", status: "pending", reportable_id: 1, reportable_type: "Message", user_id: nil, ban_id: nil, created_at: "2014-02-05 11:40:45", updated_at: "2014-02-05 11:40:45">]>
我希望此查询只有每个不同reportable_id的一个字段。 当有多个相同的reportable_id时,它应该只返回其中一个。
因此,此请求应仅返回一个字段而不是两个字段。
我尝试了.uniq.by(:reportable_id)
,但它在Rails 4上不再存在了。
并且.select("DISTINCT(reportable_id)")
仅选择reportable_id字段
但之后,我注意到即使它会起作用,也不会做我想做的事情
你有解决方案吗?
答案 0 :(得分:1)
试试这个:
Moderation::Report.group(:reportable_id)
它将为每个reporatble_id唯一地提供一条记录。
希望这会对你有所帮助。