Ruby on rails ActiveRecord作用域基于子作用域条件,是否包含具有该条件的子作用域?

Ruby on rails ActiveRecord作用域基于子作用域条件,是否包含具有该条件的子作用域?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,如何编写作用域根据子对象的条件返回自身,并仅在该条件下包含这些子对象 例如,我如何编写一个范围来返回所有已发布作业的组织,并包括那些已发布的作业(而不包括未发布的作业) 这需要两个问题吗 # Organization.rb scope :with_published_jobs, lambda { joins(:jobs) .merge(Job.published) .includes(:jobs).where(published: true) # doesnt wor

如何编写作用域根据子对象的条件返回自身,并仅在该条件下包含这些子对象

例如,我如何编写一个范围来返回所有已发布作业的
组织
,并包括那些已发布的作业(而不包括未发布的作业)

这需要两个问题吗

# Organization.rb
scope :with_published_jobs, lambda {
  joins(:jobs)
    .merge(Job.published)
    .includes(:jobs).where(published: true)
    # doesnt work
}
组织模型

class Org < ApplicationRecord
  has_and_belongs_to_many :jobs, autosave: true
  ...
类组织
工作模式

class Job < ApplicationRecord
  has_and_belongs_to_many :orgs
类作业

这两个模型与联接表相关

实现这一点的一种方法是在组织模型上创建不同的关联,并使用该关联而不是
作业

组织机构 是否有和属于许多:已发布的作业,->{where(published:true)},类名:'Job' 作用域:使用发布的作业,->{连接(:发布的作业)。包括(:发布的作业)}
您能添加模型和/或迁移以了解它们之间的关系吗?我已经更新了我的问题@SebastianPalma