PostgresqlでOne to Manyを出力する方法でちょっと悩んだので、念のため記事に残します
joinしたりサブクエリなど方法は色々あるのですが、サブクエリの方が見通しが良い、との判断のもとこのような実装を行いました
SELECT
messages.id,
messages.body,
messages.created_at,
messages.updated_at,
(SELECT ARRAY_AGG(files.name) FROM files where message_id = messages.id) as files -- ここにサブクエリ追加
FROM
messages
-- この辺色々あるけど省略
WHERE
messages.topic_id = 1