Chat.update_all
以降 UPDATE chats SET...
を追加します エイリアスを使用して更新を行うためのレールを取得することを考えることができる唯一の方法(UPDATE chats AS c
)はconnection.update
を使用します および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'
});
SQLフラグメントを避けたい場合はあまり良くありませんが、ARELを使用したい場合は、質問のように結合を使用することが唯一の方法である可能性があります。