Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

264
Visualizações
¿Cómo puedo reemplazar el valor nulo con n/a en Ruby on Rails?

Estoy trabajando en un gráfico dinámico creado a través de chartkick y chart.js en Rails.

datos mostrados desde la consola que consisten en datos nulos .

Los datos se volvieron nulos no es el problema. El problema es que quiero mostrar nulo/vacío en n/a.

Mi gráfico se parece a:

gráfico

Para resolver esto, primero actualizo la base de datos a través del código mencionado a continuación:

 Roster.where(caste_group: "").update_all(caste_group:"n/a")

Pero esto no es exactamente lo que quería. Cada vez que actualizar la base de datos no es eficiente. Luego usé transform key helper. El código va como

 caste_group = Roster.group(:caste_group).count @caste_group = caste_group.transform_keys{ |key| key==""? "n/a":key }

Aquí Roster es el modelo que consiste en el siguiente atributo caste_group como cadena y el usuario selecciona caste_group como menú desplegable. Usando este ayudante de clave de transformación, obtuve el resultado que no muestra un valor nulo. el valor nulo/vacío no se cambia de nombre a n/a. Y mi código en una vista va como

 = line_chart @event_chart,discrete:true, legend: "bottom",curve: false, colors: ["#67b55e","#d43766","#729be0"]
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Creo que puedes hacer esto en muchos niveles, así que depende de lo que necesites. Una forma de resolver esto sería establecer un valor predeterminado en la base de datos. Entonces, cada vez que su modelo se guarde con nulo, en realidad se guardará como "n\a".

Puede ejecutar una migración así:

 change_column_default :rosters, :caste_group, "n\a"

Pero tal vez no quiera editar todos los datos en la base de datos. En ese caso, puedes hacerlo a nivel de modelo o presentador. Creo que el código que publicaste del ayudante está bien. ¿No estás satisfecho con eso?

over 4 years ago · Santiago Trujillo Relatório

0

Si su consulta puede devolver nulo y "", por ejemplo

 Roster.group(:caste_group).count { nil=>12, ''=>123, 'name_first'=>2 }

esto puede ayudar

 sql = <<-SQL SELECT CASE WHEN caste_group IS NULL THEN 'n/a' WHEN caste_group='' THEN 'n/a' ELSE caste_group END AS caste_group, count(*) FROM rosters GROUP BY 1 SQL result = ActiveRecord::Base.connection.execute(sql).to_a

Esto compilará NULL o '' a 'n/a'.

resultado de ejemplo:

 [ {"caste_group"=>"n/a", "count"=>"1"}, {"caste_group"=>"name_first", "count"=>"2"} ]

A continuación, puede transformar esto en hash necesario.

 result.each_with_object({}) { |caste_group, res| res[caste_group['caste_group']] = caste_group['count'] }

p.ej

 {"n/a"=>"1", "name_first"=>"2"}
over 4 years ago · Santiago Trujillo Relatório

0

Afortunadamente soluciono esto. El problema con el mío es que ya actualicé la base de datos a "n/a". Entonces, cuando cambio la clave a través de transform_keys, me enfrento al problema. Después de eso, cambio el nombre de n/a a "N/A" y lo resuelve por mí.

 caste_group = Roster.group(:caste_group).count @caste_group = caste_group.transform_keys{ |key| key==""? "N/A":key }

Estoy publicando la respuesta porque podría ser útil para otros en el futuro.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda