Eu tenho um enum em meu modelo que corresponde a coluna no banco de dados.
Os enum
parece:
enum sale_info: { plan_1: 1, plan_2: 2, plan_3: 3, plan_4: 4, plan_5: 5 }
Como posso obter o valor inteiro?
eu tentei
Model.sale_info.to_i
Mas isso retorna apenas 0.
ruby-on-rails
ruby-on-rails-4
Cleyton
fonte
fonte
Model.sale_info.value.to_i
? por exemploModel.sale_info.plan_1.to_i
integer
Respostas:
Você pode obter os valores inteiros para um enum da classe em que o enum está:
Isso retorna um hash como:
Você pode então usar o valor sale_info de uma instância da
Model
classe para acessar o valor inteiro dessa instância :fonte
Você pode obter o número inteiro assim:
Atualização para trilhos 5
Para trilhos 5, o método acima agora retorna o valor da string :(
O melhor método que posso ver agora é:
A resposta de Shadwell também continua a funcionar para o Rails 5.
fonte
Rails <5
Outra forma seria usar
read_attribute()
:Trilhos> = 5
Você pode usar
read_attribute_before_type_cast
fonte
read_attribute_before_type_cast
.Minha resposta curta é
Model.sale_infos[:plan_2]
se você deseja obter o valor deplan_2
fonte
Eu escrevi um método em meu modelo para conseguir o mesmo em meu aplicativo Rails 5.1.
Catering para o seu caso, adicione isso ao seu modelo e chame-o no objeto quando necessário
fonte