gpt4 book ai didi

ruby-on-rails - 如何使用 ActiveRecord 获取具有 2 个相关记录的记录列表?

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:57 25 4
gpt4 key购买 nike

假设我有 2 个模型:

class Person < ActiveRecord::Base
has_many :addresses
end
class Address < ActiveRecord::Base
belongs_to :person
end

我想得到所有恰好有 2 个地址的人。有没有一种简单的 ActiveRecord/Arel 方法可以用子查询来做到这一点?我不想使用 counter_cache 来做这件事。

最佳答案

这对我有用(使用 Rails 3、PostGreSQL):

Patient.joins(:interventions).group('patients.id').having('count(patient_interventions.id) = 2')

在您的情况下,以下内容应返回具有恰好 2 个地址的人员:

Person.includes(:addresses)
.select('persons.*')
.group('persons.id')
.having('count(addresses.id) = 2')
# Note use :joins instead of :includes if you don't want the addresses data

关于ruby-on-rails - 如何使用 ActiveRecord 获取具有 2 个相关记录的记录列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13883429/

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