Rails显示最近评论的帖子

时间:2015-12-08 20:47:01

标签: ruby-on-rails activerecord

使用关系,我的帖子有很多评论。

如何显示包含最新评论的帖子?或者,更重要的是,如何显示具有特定类型的最新评论的帖子?每个评论都有一个" 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})
  }

更新:

这里是我想要抓住父项的时间线流程:我按每个"评论"查询,通过我当前的方法,它仍将返回工具,即使是最相关的& #34;截止日期"是最顶层的,不应该在日期查询中。如何根据此时间线中的相关记录获取项目?我只需查询相关关联记录中的第一项。enter image description here

1 个答案:

答案 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。如果您有更具体的要求,最好还是修改原始问题。