使用关系,我的帖子有很多评论。
如何显示包含最新评论的帖子?或者,更重要的是,如何显示具有特定类型的最新评论的帖子?每个评论都有一个" 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;截止日期"是最顶层的,不应该在日期查询中。如何根据此时间线中的相关记录获取项目?我只需查询相关关联记录中的第一项。
答案 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
。如果您有更具体的要求,最好还是修改原始问题。