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時,它應該只返回其中的一個。在activercord中選擇uniq結果的簡單方法
所以,這個請求應該只返回一個字段而不是兩個。
我試過.uniq.by(:reportable_id)
,但它並不on Rails的4 存在了和.select("DISTINCT(reportable_id)")
只能選擇reportable_id場
但之後,我注意到,即使它會工作,它不會做什麼,我'd喜歡它
你有解決方案嗎?
你想用reportable_id選擇哪個字段? – sunil
@sunil,我想選擇報告 – sidney
的每個字段.uniq是一個數組方法。如果你交換它們,比如'.by(:reportable_id).uniq',它會起作用嗎? –