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.