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.