实现Active Record Guide 2.4 has_many:通过Association

时间:2014-08-07 18:37:21

标签: activerecord ruby-on-rails-4

我正在尝试在http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

中实施该示例

但我不确定正确的方法是什么?您是先创建迁移,然后通过更改模型在模型中应用多次迁移?

hospital$ rails g model Physician name:string
      invoke  active_record
      create    db/migrate/20140807183053_create_physicians.rb
      create    app/models/physician.rb
      invoke    test_unit
      create      test/models/physician_test.rb
      create      test/fixtures/physicians.yml
hospital$ rails g model Patient name:string
      invoke  active_record
      create    db/migrate/20140807183112_create_patients.rb
      create    app/models/patient.rb
      invoke    test_unit
hospital$ rails g model Appointment physician:references patient:references appointment_date:datetime
      invoke  active_record
      create    db/migrate/20140807183152_create_appointments.rb
      create    app/models/appointment.rb
      invoke    test_unit
      create      test/models/appointment_test.rb
      create      test/fixtures/appointments.yml

这些是生成的模型:

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

class Patient < ActiveRecord::Base
end

class Physician < ActiveRecord::Base
end

是否有一个逐步指导实施一个有很多通过模型?该指南解释了这个想法,我明白了,但我不确定实际实现它的正确方法,或者它是否重要?我很困惑

1 个答案:

答案 0 :(得分:1)

好吧,您编写迁移的顺序或应用代码并不重要。但是,只有在您使用rake db:migrate 运行迁移后,您的代码才会生效。

在您发布的代码中,您显然错过了 has_many 方法。也许你喜欢this quick tip关于什么是如何以及如何通过关联构建 has_many

修改

你绝对可以手动将has_many放入其中。发电机使它更容易。但如果您感到困惑,我建议您手动编写代码并在之后运行迁移。