我有一个项目列表,想只显示有任务的项目。是否可以在 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/