Sejak Chat.update_all
akan menambahkan UPDATE chats SET...
satu-satunya cara yang dapat saya pikirkan untuk mendapatkan Rails untuk melakukan pembaruan dengan alias (UPDATE chats AS c
) adalah dengan menggunakan connection.update
dan 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'
});
Tidak bagus jika Anda ingin menghindari fragmen SQL, tetapi menggunakan gabungan seperti dalam pertanyaan Anda mungkin satu-satunya cara jika Anda ingin menggunakan AREL.