2014-02-05 61 views
0
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喜歡它

你有解決方案嗎?

+0

你想用reportable_id選擇哪個字段? – sunil

+0

@sunil,我想選擇報告 – sidney

+0

的每個字段.uniq是一個數組方法。如果你交換它們,比如'.by(:reportable_id).uniq',它會起作用嗎? –

回答

1

試試這個:

Moderation::Report.group(:reportable_id) 

它會給你只有一個記錄每個唯一reporatble_id。

希望這會幫助你。

+0

@sidney,它是爲你工作嗎? – sunil

+0

謝謝我已經在一小時前嘗試過了,但由於我只有兩個字段,並且只有一個結果,我認爲我無法遍歷它。 但是,多虧你,我才注意到它是可迭代的;) – sidney

相關問題