在Jobs和Stacks之间,通过JobStacks,我有很多到很多的关系。我正在编写一个ActiveRecord查询,以返回包含传递给它的所有堆栈的作业。
class Job < ApplicationRecord
has_many :job_stacks
has_many :stacks, through: :job_stacks
endclass JobStack < ApplicationRecord
belongs_to :job
belongs_to :stack
endclass Stack < ApplicationRecord
has_many :job_stacks, dependent: :destroy
has_many :jobs, through: :job_stacks
end这将创建一个返回包含任意堆栈的作业的SQL IN查询。
Job.joins(:stacks).where(stacks: {name: ['JavaScript', 'Python']})是否有类似的方法来编写这个返回的Jobs,其中包含所有的Stacks作为来自Jobs的.where调用
发布于 2022-03-07 16:27:05
发布于 2022-03-07 16:42:17
你可以试试这个:
names = ['JavaScript', 'Python']
Job.where(id:
Stack.
where(name: names).
select(:job_id).
group(:job_id).
having("count(*) >= ?", names.size)
)https://stackoverflow.com/questions/71383099
复制相似问题