Depuis Chat.update_all ajoutera UPDATE chats SET... la seule façon que je peux penser d'obtenir des rails pour faire une mise à jour avec un alias (UPDATE chats AS c ) est en utilisant connection.update et une chaîne 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'
});
Pas génial si vous voulez éviter les fragments SQL, mais l'utilisation d'une jointure comme dans votre question peut être le seul moyen si vous voulez utiliser AREL.