所以,我有一个“高级”查询(实际上不多),我想把它转换成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上下文:
我有三种型号:
Microposts
,Users
,Relationships
。关系是处理所有用户关系(跟随者/跟随者)的联接表。
用户有许多通过关系跟踪的用户/追随者。
用户有许多微环,而微环只有一个用户。
谢谢。
最佳答案
不知道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