了解 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.patients
的 patients
是谁?
physician.patients = patients
可以发生在控制器或模型中。
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
在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.patients
的 patients
是谁?
physician.patients = patients
可以发生在控制器或模型中。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