我有两节课
class Patient < ActiveRecord::Base
belongs_to :camp
has_many :vaccinations
end
class Vaccination < ActiveRecord::Base
belongs_to :patient
end每种疫苗接种都有名为vaccine_id的成员。一个“完整的”疫苗接种包括一组(比如说)6种不同的疫苗,:names = {A,B,C,D,E,F}。
患者接受了许多疫苗接种,我想要一份所有接受“完全”疫苗接种的患者的报告。有没有一个SQL或ActiveRecord查询可以用来获取这个患者列表?
发布于 2015-04-22 10:02:07
可能是这样的:
# in patient.rb
scope :with_completed_vaccinations, ->(number) {
joins(:vaccinations).group('patients.id').
having('COUNT(vaccinations.name) >= ?', number)
}使用此scope,您可以编写如下查询:
Patient.with_completed_vaccinations(6)发布于 2015-04-22 18:32:42
这是一种让所有接受过至少一次完整疫苗接种的患者完成接种的简单方法:
Patient.select { |pat| pat.vaccinations.any? { |vac| vac.complete? } }对于所有疫苗接种都已完成的患者,只需切换.any?用.all吗?
您可以将其封装在一个作用域中,例如,通过将此方法放入patient.rb中
def self.with_complete_vaccinations
select { |pat| pat.vaccinations.any? { |vac| vac.complete? } }
end这一切都假设你有一个完整的?为您的疫苗接种模型定义的方法。
https://stackoverflow.com/questions/29786317
复制相似问题