我有一个简单的事件应用程序,人们可以评论,我有能力获得单个用户评论的事件。这将是独一无二的。
我正在寻找一种方法,我可以把它放到一个Scope中,或者只是写得更好。任何提示都会非常感激,因为它现在运行一个新的查询显然是为Event.find
下面的代码是我上周写的一些代码的混搭,然后找到了一些替代方法,但我认为这可以改进,比如events = []
- 肯定可以在你追加时分配事件。
def commented_on
events = []
self.comments.each do |c|
p c
events << Event.find(c.event_id)
end
# Return only unique Events
p events.uniq
end
答案 0 :(得分:2)
你应该从事件模型转到这里。 这样的事情应该有效:
Event.join(:comments => :user).where("users.id" => self.id).uniq
答案 1 :(得分:1)
events = Event.where(id: comments.map(&:event_id))