我的Rails 3应用程序中有三个模型,DailyData
和DailyDataVehicle
以及Vehicle
,这是多对多的关系。
我刚刚了解到,如果使用关联更新模型,它不会更新数据库,那么我将返回并添加这些迁移。我也很幸运地认为我知道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"
答案 0 :(得分:1)
class AddDailyDataToDailyDataVehicle < ActiveRecord::Migration
def change
add_column :daily_data_vehicles, : daily_data_id, :integer
add_index :daily_data_vehicles, :daily_data_id
end
end
class DailyDataVehicle < ActiveRecord::Base
belongs_to :daily_data
end
class DailyData < ActiveRecord::Base
has_many :daily_data_vehicles
end