Ich habe eine Aufzählung in meinem Modell, die der Spalte in der Datenbank entspricht.
Das enum
sieht aus wie:
enum sale_info: { plan_1: 1, plan_2: 2, plan_3: 3, plan_4: 4, plan_5: 5 }
Wie kann ich den ganzzahligen Wert erhalten?
ich habe es versucht
Model.sale_info.to_i
Dies gibt jedoch nur 0 zurück.
ruby-on-rails
ruby-on-rails-4
Cleyton
quelle
quelle
Model.sale_info.value.to_i
? zBModel.sale_info.plan_1.to_i
integer
Antworten:
Sie können die ganzzahligen Werte für eine Aufzählung aus der Klasse abrufen, in der sich die Aufzählung befindet:
Das gibt einen Hash zurück wie:
Sie können dann den Wert sale_info aus einer Instanz der
Model
Klasse verwenden, um auf den ganzzahligen Wert für diese Instanz zuzugreifen :quelle
Sie können die ganze Zahl so erhalten:
Update für Schienen 5
Für Schienen 5 gibt die obige Methode jetzt den Zeichenfolgenwert zurück :(
Die beste Methode, die ich jetzt sehen kann, ist:
Shadwells Antwort funktioniert auch weiterhin für Schienen 5.
quelle
Schienen <5
Ein anderer Weg wäre zu verwenden
read_attribute()
:Schienen> = 5
Sie können verwenden
read_attribute_before_type_cast
quelle
read_attribute_before_type_cast
.Meine kurze Antwort ist
Model.sale_infos[:plan_2]
für den Fall, dass Sie Wert von erhalten möchtenplan_2
quelle
Ich habe in meinem Modell eine Methode geschrieben, um dasselbe in meiner Rails 5.1-App zu erreichen.
Fügen Sie dies Ihrem Modell hinzu und rufen Sie es bei Bedarf auf dem Objekt auf
quelle