在我的rails应用程序中,一个人has_many:测量和一个Measurement belongs_to a:person。 我将关联添加到模型文件中。然后我为这个关联编写了两个迁移。
class AddMeasurementRefToPeople < ActiveRecord::Migration
def change
add_reference :people, :measurement, index: true, foreign_key: true
end
end
和
class AddPersonRefToMeasurements < ActiveRecord::Migration
def change
add_reference :measurements, :person, index: true, foreign_key: true
end
end
我的schema.rb
看起来像这样:
ActiveRecord::Schema.define(version: 20150730121109) do
create_table "measurements", force: :cascade do |t|
t.datetime "date"
t.integer "weight"
t.integer "bmi_calc"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "person_id"
end
add_index "measurements", ["person_id"], name: "index_measurements_on_person_id"
create_table "people", force: :cascade do |t|
t.string "name"
t.float "length"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "measurement_id"
end
add_index "people", ["measurement_id"], name: "index_people_on_measurement_id"
end
现在我怀疑是否确实需要两个迁移。现在,我在两个模型中都有一个foreign_key。一个人不够吗? (如果是这样,我应该回滚两次迁移中的哪一次?)
答案 0 :(得分:2)
根据您的协会,一个人有很多测量,测量仅属于人。
您只需要在测量表中输入外键。无需将.env
添加到人,因为一个人有很多测量值。
所以measurement_id
就足够了
你应该做的模特
AddPersonRefToMeasurements