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

474
Visualizações
Rieles: ¿cómo hacer referencia al valor de la columna propia del modelo durante la declaración de actualización?

¿Es posible lograr algo así?

  • Supongamos name y plural_name son campos de la tabla Animal.
  • Supongamos que pluralise_animal es una función auxiliar que toma una cadena y devuelve su literal plural.
  • No puedo recorrer los registros de animales por razones técnicas.
  • esto es solo un ejemplo
 Animal.update_all("plural_name = ?", pluralise_animal("I WANT THE ANIMAL NAME HERE, the `name` column's value"))

Quiero algo similar a cómo puedes usar funciones en MySQL mientras modificas los valores de las columnas. ¿Está esto fuera del alcance o es posible?

 UPDATE animals SET plural_name = CONCAT(name, 's') -- just an example to explain what I mean by referencing a column. I'm aware of the problems in this example.

Gracias por adelantado

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

No puedo recorrer los registros de animales por razones técnicas.

Lo sentimos, esto no se puede hacer con esta restricción.

Si su función auxiliar de pluralización se implementa en el cliente, entonces debe recuperar los valores de los datos en el cliente, pluralizarlos y luego publicarlos nuevamente en la base de datos.

Si desea que la ACTUALIZACIÓN se ejecute en un conjunto de filas sin recuperar los valores de datos al cliente, debe implementar la lógica de pluralización en una expresión SQL, o una función almacenada o algo así.

Las sentencias UPDATE se ejecutan en el motor de la base de datos. No pueden llamar funciones en el cliente.

over 4 years ago · Santiago Trujillo Relatório

0

Use una secuencia de comandos ruby para generar una secuencia de comandos SQL que INSERTA los valores plurales en una tabla temporal

 File.open(filename, 'w') do |file| file.puts "CREATE TEMPORARY TABLE pluralised_animals(id INT, plural varchar(50));" file.puts "INSERT INTO pluralised_animals(id, plural) VALUES" Animal.each.do |animal| file.puts( "( #{animal.id}, #{pluralise_animal(animal.name)})," end end

Nota: reemplace la coma final (,) con un punto y coma (;)

Luego ejecute el script SQL generado en la base de datos para completar la tabla temporal.

Finalmente, ejecute una declaración de actualización de SQL en la base de datos que une la tabla temporal a la tabla principal...

 UPDATE animals a INNER JOIN pluralised_animals pa ON a.id = pa.id SET a.plural_name = pa.plural;
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