# 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(而不是AND!)以回复用户。
答案 0 :(得分:0)
我知道如何执行此操作的最简单方法是(Micropost.from_users_followed_by(self) + Micropost.in_reply_to(self)).uniq
您也可以使用支持OR子句的Squeel gem(https://github.com/ernie/squeel/) - 但我不确定Squeel是否允许您在现有范围上使用OR运算符;它可能会或可能不是解决您麻烦的有效方法。