Saya memiliki enum di Model saya yang sesuai dengan kolom di database.
The enum
terlihat seperti:
enum sale_info: { plan_1: 1, plan_2: 2, plan_3: 3, plan_4: 4, plan_5: 5 }
Bagaimana saya bisa mendapatkan nilai integer?
Saya sudah mencoba
Model.sale_info.to_i
Tapi ini hanya mengembalikan 0.
ruby-on-rails
ruby-on-rails-4
Cleyton
sumber
sumber
Model.sale_info.value.to_i
? misalnyaModel.sale_info.plan_1.to_i
integer
Jawaban:
Anda bisa mendapatkan nilai integer untuk enum dari kelas tempat enum berada:
Itu mengembalikan hash seperti:
Anda kemudian dapat menggunakan nilai sale_info dari sebuah instance
Model
kelas untuk mengakses nilai integer untuk instance itu :sumber
Anda bisa mendapatkan integer seperti ini:
Pembaruan untuk rel 5
Untuk rails 5, metode di atas sekarang mengembalikan nilai string :(
Metode terbaik yang bisa saya lihat untuk saat ini adalah:
Jawaban Shadwell juga terus bekerja untuk rel 5.
sumber
Rel <5
Cara lain adalah dengan menggunakan
read_attribute()
:Rel> = 5
Kamu bisa memakai
read_attribute_before_type_cast
sumber
read_attribute_before_type_cast
.Jawaban singkat saya adalah
Model.sale_infos[:plan_2]
jika Anda ingin mendapatkan nilaiplan_2
sumber
Saya menulis metode di Model saya untuk mencapai hal yang sama di aplikasi Rails 5.1 saya.
Katering untuk kasus Anda, tambahkan ini ke dalam Model Anda dan panggil pada objek saat diperlukan
sumber