所以,我有一个“高级”查询(实际上不多),我想把它转换成ruby活动记录的语法。

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按照desc创建顺序跟踪用户,但我真的不知道如何使用active record的语法轻松地转换这些微孔。
有什么想法吗?
ps:这里有一些rails上下文:
我有三种型号:MicropostsUsersRelationships
关系是处理所有用户关系(跟随者/跟随者)的联接表。
用户有许多通过关系跟踪的用户/追随者。
用户有许多微环,而微环只有一个用户。
谢谢。

最佳答案

不知道ruby,但是sql可以简化为:

SELECT microposts.*
FROM microposts
WHERE user_id IN
      ( SELECT r.followed_id as uid
        FROM relationships r
        WHERE follower_id = 1
      )
   OR user_id = 1
ORDER BY microposts.created_at DESC

10-08 00:28