如果我在Ruby on Rails中指定has_many:through关联,我是否必须为第3个表创建模型?

时间:2016-01-02 19:20:07

标签: ruby-on-rails activerecord

假设我有

class CreateAppointments < ActiveRecord::Migration
  def change
    create_table :physicians do |t|
      t.string :name
      t.timestamps null: false
    end

    create_table :patients do |t|
      t.string :name
      t.timestamps null: false
    end

    create_table :appointments do |t|
      t.belongs_to :physician, index: true
      t.belongs_to :patient, index: true
      t.datetime :appointment_date
      t.timestamps null: false
    end
  end
end

1-我是否必须再次定义模型文件中的关联?这引出了我的下一个问题.... 2-我是否必须为第三个约会表创建一个模型,或者只是运行迁移,每当医生和患者更新时,Active Record都会负责更新它?什么时候会在这种类型的关联中触发到第三个表的插入?

1 个答案:

答案 0 :(得分:1)

活跃唱片里面有很多魔法,所以我明白你的来源。

  1. 是的,迁移不会为ActiveRecord模型添加正确的关联。迁移可以对数据库进行更改。

  2. 是的,如果你没有使用rails g scaffold或model生成它,那么你需要创建一个继承自ActiveRecord :: Base的Appointment类,以便通过orm使用它。然后对他们进行适当的关联(患者有很多预约,他们也会有很多医生通过预约。反之亦然医生。