gpt4 book ai didi

ruby-on-rails - Ruby on Rails 中数据库调用的两个条件

转载 作者:行者123 更新时间:2023-12-04 03:34:09 25 4
gpt4 key购买 nike

我有一个 Ruby on Rails 应用程序,它有帖子类别

在索引 View 中,它应该显示每个类别的帖子列表,有两个条件:

  • 分类有一些帖子
  • 帖子不超过 30 天

我的 Controller 如何在其中包含第二个条件?

def index
@categories = Category.includes(:posts).select{|c| c.posts.count > 0}
end

注意:我尝试了以下方法,但它仍然显示超过 30 天的帖子:

@categories = Category.includes(:posts).select{|c| c.posts.count > 0 && c.posts.where(['created_at > ?', 30.days.ago])  }

最佳答案

您可以按照以下方式进行操作:

Category.joins(:posts)
.select('categories.*')
.group('categories.id')
.where('posts.created_at > ?', 30.days.ago)
.having('COUNT(posts.*) > 0')

这将返回:

categories having at least 1 "recent" post which is/are maximum 30 days old


来 self 之前的回答:How to return results filtered on relations count to a view in RAILS?

关于ruby-on-rails - Ruby on Rails 中数据库调用的两个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com