Sedan Chat.update_all
kommer att lägga till UPDATE chats SET...
det enda sättet jag kan tänka mig att få rails att göra en uppdatering med ett alias (UPDATE chats AS c
) är genom att använda connection.update
och en sql-sträng:
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'
});
Inte bra om du vill undvika SQL-fragment, men att använda en a join som i din fråga kan vara det enda sättet om du vill använda AREL.