Rails 3 アプリケーションには 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"