2013-03-12 88 views
0
# models/micropost.rb 

def self.from_users_followed_by(user) 
    followed_user_ids = "SELECT followed_id FROM relationships 
         WHERE follower_id = :user_id" 
    where("user_id IN (#{followed_user_ids}) OR 
     user_id = :user_id", user_id: user.id) 
end 

def self.in_reply_to(user) 
    where("content LIKE :user_login", user_login: '@' + user.login + '%') 
end 


# models/user.rb 

def feed 
    Micropost.from_users_followed_by(self).in_reply_to(self) # AND 
end 

它的工作原理,但我需要從用戶微博,其次是用戶OR(而不是!)在回覆用戶。聯合兩條款

回答

0

我知道該怎麼做最簡單的方法,這將是(Micropost.from_users_followed_by(self) + Micropost.in_reply_to(self)).uniq

您還可以使用Squeel寶石(https://github.com/ernie/squeel/),它支持OR子句 - 但我不知道,如果Squeel讓您使用OR運算符在現有範圍內;它可能會或可能不會有效解決您的問題。

+0

它的工作原理,但它返回一個數組,而我想有一個關係(我的錯誤,我應該描述它)。無論如何,謝謝你的答案。 – Qumeric 2013-03-13 11:29:09

+0

我在使它在本地運行時遇到了一些麻煩,但我偶然聽到您可能能夠使用「.merge」而不是「+」來獲取關係對象。因人而異。 – 2013-03-13 18:23:29