我試圖從用戶那裏獲取一些阻止「我」的帖子。下面硒型號:從非阻止用戶提取帖子
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
助手返回登錄的用戶「我」的電流。
如果我正確理解你的意圖,SQL是'SELECT * FROM帖裏NOT EXISTS(SELECT 1 FROM的阻塞B,其中b.blocked_id = $ 1 = b.blocker_id posts.user_id)' - 其中'$ 1'是參數'current_user'。也許這將有助於制定查詢的ActiveRecord表達式;你當然可以測試SQL,並確保它做你想要的。 –
它像一個魅力。謝謝。但是它有效嗎?目前我有幾百萬條記錄。 – sandelius
找出最好的方法是'EXPLAIN ANALYZE'並參見。 –