如何编写范围以在嵌套模型上搜索属性?

我有一个患者模型has_many:入院。 我想为患者模型创建一个范围,该范围将返回目前被录取的所有患者。 如果患者的任何入院时间为零,则确定患者入院。 通过迭代患者并检查每次入院,我可以在应用程序中轻松地做到这一点,但似乎我应该让数据库执行此操作。 我之前没有写过这样的范围。 有什么建议? (我在开发中使用sqlite3,在生产中使用postgresql,以防某些SQL需要 – 我希望不是)

class Patient < ActiveRecord::Base has_many :admissions scope :admitted, includes(:admissions).where('admissions.discharge_time' => nil) end 

你也可以这样做,我认为这是一个小干事:

 class Admission < ActiveRecord::Base belongs_to :patient scope :active, where(:discharge_time => nil) end class Patient < ActiveRecord::Base has_many :admissions def self.admitted joins(:admissions) & Admission.active end end