Seit Chat.update_all
fügt UPDATE chats SET...
hinzu Die einzige Möglichkeit, die mir einfällt, bringt Rails dazu, ein Update mit einem Alias durchzuführen (UPDATE chats AS c
) erfolgt durch die Verwendung von connection.update
und eine SQL-Zeichenfolge:
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'
});
Nicht großartig, wenn Sie SQL-Fragmente vermeiden möchten, aber die Verwendung eines Joins wie in Ihrer Frage ist möglicherweise die einzige Möglichkeit, wenn Sie AREL verwenden möchten.