Da Chat.update_all aggiungerà UPDATE chats SET... l'unico modo in cui mi viene in mente di ottenere Rails per eseguire un aggiornamento con un alias (UPDATE chats AS c ) utilizzando connection.update e una stringa 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'
});
Non eccezionale se vuoi evitare frammenti SQL, ma usare un join come nella tua domanda potrebbe essere l'unico modo se vuoi usare AREL.