それで、私はこの「高度な」クエリを (それほど多くはありませんが) 持っており、それを Ruby Active Record の構文に変換したいと考えています。
SELECT microposts.*
FROM microposts
WHERE user_id IN
( SELECT r.followed_id as uid
FROM relationships r
WHERE follower_id = 1
UNION
SELECT u.id as uid
FROM users as u
WHERE id = 1
)
ORDER BY microposts.created_at DESC
アイデアは、ユーザー 1 のすべてのマイクロポストを取得し、ユーザー 1 が作成順にユーザーをフォローすることでしたが、Active Record の構文を使用してこれを簡単に変換する方法が本当にわかりません。
何か考えはありますか?
PS:ここで尋ねられたように、いくつかのレールのコンテキストがあります:
Microposts
、Users
、 の3 つのモデルがありRelationships
ます。
- Relationships は、すべてのユーザーの関係 (フォロワー/フォロー対象) を処理する結合テーブルです。
- ユーザーは、関係を通じて多くの follow_users/followers を持っています。
- ユーザーには多数のマイクロフープがあり、マイクロフープには 1 人のユーザーがいます。
ありがとう。