2

私はレールを学んでいますが、クエリに行き詰まっています。私のモデルには多対多の関係があります。私が使用しているモデルは、私の仕事の領域に特化しすぎているため、説明するのが難しいため、Rails ガイドの例を少し変更して使用します。

モデルは次のとおりです。

class Physician < ActiveRecord::Base
  has_many :appointments
  has_many :patients, through: :appointments
end

class Appointment < ActiveRecord::Base
  attr_accessor :appointment_time

  belongs_to :physician
  belongs_to :patient
end

class Patient < ActiveRecord::Base
  attr_accessor :name, :age

  has_many :appointments
  has_many :physicians, through: :appointments
end

Appointment.appointment_time を持つ患者のリストが必要です。を使用して、医師に関連付けられたすべての患者を一覧表示できますphysician.patients。予約時間も含めるにはどうすればよいですか?患者のリストを取得したら、Appointments を照会することを考えることができますが、これを行うための「レール」の方法 (のようなものphysician.patients_with_appointments) があるかどうか疑問に思っていました。そうでない場合、これを行う効率的な方法は何ですか?

4

2 に答える 2

2
physician.appointments.includes(:patients).each do |appointment|
  puts appointment.appointment_time
  puts appointment.patient.name
end

**これはテストされていません

私の知る限り、あなたが探しているレールウェイは実際には存在しません。インクルードを使用して、ループごとにそれぞれをロードしないようにすることができます。現在レールコンソールにアクセスできないため、インクルードを適切な場所に配置しているかどうかわかりません。

多くのレコードがある場合は、find_each を使用してバッチ検索を行うことができますが、この例ではこれでうまくいくはずです。

于 2013-08-05T03:50:59.340 に答える