了解 Rails 指南关联示例

Understanding Rails Guide association example

Rails Guide for associations' has_many section是下面的例子:

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

class Appointment < ActiveRecord::Base
  belongs_to :physician
  belongs_to :patient
end

class Patient < ActiveRecord::Base
  has_many :appointments
  has_many :physicians, through: :appointments
end

The collection of join models can be managed via the API. For example, if you assign

physician.patients = patients

new join models are created for newly associated objects, and if some are gone their rows are deleted."

想了解一下:

1) physician.patients = patients 行出现在哪里?
2) 分配给 physician.patientspatients 是谁?

  1. physician.patients = patients 可以发生在控制器或模型中。
  2. patients 是一个包含 Patient 个对象的列表,您可以在调用上述赋值之前创建这些对象。

在控制台试试这个:

> patient1 = Patient.create(...) # Pass appropriate parameters
> patient2 = Patient.create(...) # Pass appropriate parameters
> patients = [patient1, patient2]
> physician = Physician.create(...) # Pass appropriate parameters
> physician.patients = patients
> physician.patients.count
 => 2