Как написать область для поиска атрибутов во вложенной модели? - PullRequest
1 голос
/ 16 апреля 2011

У меня есть модель пациента, которая имеет: Я хочу создать область для модели пациента, которая будет возвращать всех пациентов, которые в настоящее время принимаются. Пациент определяется для госпитализации, если какое-либо из его поступлений имеет время выписки ноль. Я могу сделать это достаточно легко в приложении, просматривая пациентов и проверяя каждое поступление, но мне кажется, что для этого мне нужна база данных. Я не писал такую ​​область видимости раньше. Какие-либо предложения? (Я использую sqlite3 в разработке и postgresql в производстве, если нужен какой-то SQL - надеюсь, это не так)

1 Ответ

2 голосов
/ 16 апреля 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...