Desde
Chat.update_all
adicionará UPDATE chats SET...
a única maneira que consigo pensar em fazer Rails fazer uma atualização com um alias (UPDATE chats AS c
) está usando connection.update
e uma string 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'
});
Não é ótimo se você quiser evitar fragmentos SQL, mas usar uma junção como na sua pergunta pode ser a única maneira se você quiser usar o AREL.