我在我的Rails 3應用程序中有三個模型,DailyData
和DailyDataVehicle
和Vehicle
,這是一個多對多的關係。在Rails遷移中的參考(n | n關係)
我剛剛瞭解到,如果您使用關聯更新模型,它不更新數據庫,所以我回來並添加這些遷移。我也很幸運地自信地認爲我知道belongs_to
和has_many
之間的差異,但是,在我的遷移文件中,我不確定t.references
的確如此。
因此,我將遷移模型命名爲AddDailyDataToDailyDataVehicle
,並且想要將dailyData_id
添加到daily_data_vehicles
表中。這是一個多對多的關係,所以我想id key
在關係表DailyDataVehicles
,但我不太確定t.references
會知道。
也許我稍微混淆了類關聯和數據庫關係,如果是,請澄清一下。
如果t.references
不是我想要的,是否必須手動聲明與has_many
的關係,如果是,那麼語法是什麼?
模式目前文件:
create_table "daily_data_vehicles", :force => true do |t|
t.integer "vehicle_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "daily_data_vehicles", ["vehicle_id"], :name => "index_daily_data_vehicles_on_vehicle_id"
遷移(未遂):
class AddDailyDataToDailyDataVehicle < ActiveRecord::Migration
def change
change_table :dailyDataVehicles do |t|
t.references :dailyData
end
add_index :dailyDataVehicles, :dailyData_id
end
end
我覺得模式文件應該看起來像如果遷移工作正常:
create_table "daily_data_vehicles", :force => true do |t|
t.integer "vehicle_id"
t.integer "dailyData_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "daily_data_vehicles", ["vehicle_id"], :name => "index_daily_data_vehicles_on_vehicle_id"
add_index "daily_data_vehicles", ["dailyData_id"], :name => "index_daily_data_vehicles_on_daily_data_id"
與區別在於t.integer "dailyData_id"
和add_index "daily_data_vehicles", ["dailyData_id"], :name => "index_daily_data_vehicles_on_daily_data_id"
這就像只有在你的模式文件 – VenkatK
所以t.references將解決模式方面?然後我必須相應地調整模型? –
當然你必須。 – VenkatK