2015-04-27 12 views
5

ich Schienen 4.1 und die neue ENUM-Funktionalität auf eine Reihe von Aufzählungen in meinem Modellklasse zB mit:Active Gruppe von ENUM

class Campaign < ActiveRecord::Base  
    enum status: [:pending, :active, :paused, :complete] 

end 

Ich möchte Kampagnen abfragen und in der Liste eine Anzahl von Status zB:

Diese einfache Abfrage funktioniert gut, aber gibt den Ganzzahlwert der Aufzählung aus der DB zurück. Gibt es eine einfache Möglichkeit, dies in die String-Darstellung zu konvertieren?

Antwort

9

Nur Kartennummern zu verwandten Stringwerte:

Campaign.all.group(:status).count.map { |k, v| [Campaign.statuses.key(k), v] }.to_h 
0

Sie können auch Schienen #transform_keys Methode verwenden:

Campaign.all.group(:status).count.transform_keys { |k| Campaign.statuses.key(k) } 
Verwandte Themen