2015-12-08 141 views
0

使用关系,我的帖子有很多评论。Rails显示帖子最新评论

如何显示包含最新评论的帖子?或者,更重要的是,如何显示特定类型的最新评论的帖子?每条评论都有一个“comment_type”字段,所以我想查找最近使用特定评论类型评论的所有帖子。这应该是一个简单的范围,但无法弄清楚。

这是我目前的,但这仍然返回所有帖子,没有筛选出没有类型com_date_due类型的最新评论的帖子。

@posts = Post.includes(:comments).upcoming

scope :upcoming, -> { 
    order('comments.created_at ASC') 
    .where('comments' => {com_type: 'com_date_due', com_date: Time.now-1.day..Time.now+1.week}) 
    } 

UPDATE:

这里是我怎么想抓住父项的时间表流:我的每一个“注释”查询,以我目前的方法,它仍将返回工具,即使是最相关的“截止日期”是最上面的一个,不应该在日期查询中。我如何根据此时间线中的关联记录获取项目?我只需要查询相关关联记录中的第一个项目。 enter image description here

+0

将'includes'添加到'comments' –

+0

对不起,该对象已包含注释。让我更新。 –

+0

补充说,在范围 –

回答

0

如何显示近期最特殊类型

#app/models/post.rb 
class Post < ActiveRecord::Base 
    scope :upcoming_comments, ->(type='com_date_due') { includes(:comments).where(comments: {comment_type: type, created_at: Time.now-1.day..Time.now+1.week}).order(comments: {created_at: :asc}) } 
end 

你的问题是相当广泛的评论文章,所以这是我所期待的使用方法:@posts = Post.upcoming_comments。如果你有更具体的要求,你最好修改你的原始问题。

+0

谢谢,Rich。这仍然包括与无关评论的帖子。我无法解释... NDA的吸吮。我想获得所有具有最近关联记录的'due_date'的'Items'。因此,如果一个项目有3个“截止日期”,最近一次是+ 1年(本周到期),但它查询本周的到期日期,因此它会选择该项目,因为它在本周内具有相关的截止日期,即使有一个更准确的未来到期日期。合理?如果更好,请聊天。 –

+0

Rich,请参阅我的更新。 –

+0

哇,很好的界面! –