我正在尝试从未阻止“我”的用户那里获取一些帖子。硒型号如下:
User
id
username
....
Post
id
user_id
content
...
Blockings
blocker_id
blocked_id
我需要从未阻止我的所有用户处获取帖子。
我用以下内容获取所有帖子:
@posts Post.all
但是我如何将它们加在一起。
伪
SELECT * FROM posts WHERE "posts.user_id isn't blocking me"
我有一个名为current_user
的帮助程序,它返回当前登录用户“我”。
答案 0 :(得分:1)
使用SQL执行此操作的方法是:
select *
from post
where user_id not in
(select blocker_id
from blockings
where blocked_id = 1);
只需将数字id替换为变量。
答案 1 :(得分:0)
在你的Post类和这样的范围内:
scope :not_blocked_from, lambda{|user| where("blocked_id <> ?", user.id)}
您可以按以下方式获取所需的帖子:
Post.not_blocked_from(me)
会工作。