ruby-on-rails - 是否可以在 has_many 关系上使用 count 条件?

标签 ruby-on-rails ruby-on-rails-3 associations conditional-statements

我有一个项目列表,想只显示有任务的项目。是否可以在 has_many 关系上使用带计数的条件?

# get my project list
Project.includes(:tasks).where(...)

class Project < ActiveRecord::Base
  has_many :tasks

class Task < ActiveRecord::Base
  belongs_to :project

目前我正在循环执行此操作,但我认为这不是正确的方法。

最佳答案

由于您已经迫不及待地加载项目的任务,您可以使用以下语句来获取具有任务的项目。

# get my project list
Project.includes(:tasks).where("tasks.id IS NOT NULL")

这是有效的,因为 includes 使用 LEFT OUTER JOIN

另一方面,如果您不想预先加载任务,则可以使用 joins,因为它使用 INNER JOIN。

Project.joins(:tasks).where(...)

关于ruby-on-rails - 是否可以在 has_many 关系上使用 count 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806396/

相关文章:

ruby-on-rails - 在 production.rb 中禁用 eager_load 对性能有何影响?

ruby-on-rails - rails 3.1 : Access a fingerprinted image from css

ios - 关闭不使用 Rabbitmq 的连接

ruby-on-rails - Rails - 检查数组中的任何对象是否为 ActiveRecord 实例

ruby-on-rails - 我可以将命名范围附加到 Rails 中的链接吗?

c# - 必须使用关系流畅的 API 或数据注释显式配置此关联的主体端

html - Heroku - CSS 不在单个页面上加载,而是在其他任何地方加载

ruby-on-rails - Capistrano 部署(cap 部署)失败,身份验证错误

java - 此 UML 关联是否正确匹配代码?

java简单关联