2

我正在尝试从没有阻止“我”的用户那里获取一些帖子。Se 型号如下:

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返回当前登录用户“我”的助手。

4

2 回答 2

1

使用 SQL 的一种方法是:

select *
  from post
  where user_id not in 
    (select blocker_id 
    from blockings
    where blocked_id = 1);

只需将数字 id 替换为变量即可。

SQL小提琴

于 2012-10-31T11:15:54.987 回答
0

在您的 Post 类和这样的范围中:

scope :not_blocked_from, lambda{|user| where("blocked_id <> ?", user.id)}

你可以获取你想要的那些帖子,如下所示:

Post.not_blocked_from(me)

将工作。

于 2012-10-31T11:05:43.990 回答