Mam wyliczenie w moim modelu, które odpowiada kolumnie w bazie danych.
Do enum
wygląda następująco:
enum sale_info: { plan_1: 1, plan_2: 2, plan_3: 3, plan_4: 4, plan_5: 5 }
Jak mogę uzyskać wartość całkowitą?
próbowałem
Model.sale_info.to_i
Ale to zwraca tylko 0.
ruby-on-rails
ruby-on-rails-4
Cleyton
źródło
źródło
Model.sale_info.value.to_i
? np.Model.sale_info.plan_1.to_i
integer
Odpowiedzi:
Wartości całkowite wyliczenia można pobrać z klasy, w której znajduje się wyliczenie:
To zwraca hash, taki jak:
Następnie możesz użyć wartości sale_info z instancji
Model
klasy, aby uzyskać dostęp do wartości całkowitej dla tej instancji :źródło
Możesz uzyskać taką liczbę całkowitą:
Aktualizacja dla szyn 5
Dla rails 5 powyższa metoda zwraca teraz wartość ciągu :(
Najlepsza metoda, jaką na razie widzę, to:
Odpowiedź Shadwella działa również w przypadku szyn 5.
źródło
Szyny <5
Innym sposobem byłoby użycie
read_attribute()
:Szyny> = 5
Możesz użyć
read_attribute_before_type_cast
źródło
read_attribute_before_type_cast
.Moja krótka odpowiedź brzmi
Model.sale_infos[:plan_2]
na wypadek, gdybyś chciał uzyskać wartośćplan_2
źródło
Napisałem metodę w moim modelu, aby osiągnąć to samo w mojej aplikacji Rails 5.1.
Przygotowując swoją sprawę, dodaj to do swojego Modelu i w razie potrzeby wywołaj na obiekcie
źródło