sql >> Base de Datos >  >> RDS >> PostgreSQL

Actualización masiva de una tabla unida con ActiveRecord update_all y Rails 4

Desde Chat.update_all agregará UPDATE chats SET... la única forma en que se me ocurre hacer que Rails haga una actualización con un alias (UPDATE chats AS c ) es usando connection.update y una cadena sql:

Chat.connection.update(Q%{
  UPDATE chats AS c 
  SET email = m.source_name
  FROM messages AS m
  WHERE c.id = m.chat_id 
    AND m.created_at >= '2014-10-10'
});

No es genial si desea evitar los fragmentos de SQL, pero usar una combinación como en su pregunta puede ser la única forma si desea usar AREL.