Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

473
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda