1

私は2つのActiveRecodeモデル、CarUserを持っています。これには、多対1の関連付けがあります。

class Car < ActiveRecord::Base
  has_many :users
  ...
end

class User < ActiveRecord::Base
  belongs_to :car
  ...
end

また、データベースには、carsusersの2つのテーブルがあります。usersテーブルには属性car_idがあります

carインスタンスをcarsテーブルに挿入する移行を行いたいのですが、その間に、carインスタンスと関連付けられてusersテーブルに挿入されるユーザーインスタンスが作成されます。移行でこれを行う方法は?

これは、この移行を実行することにより、carインスタンスとそれに関連するユーザーインスタンスの両方がデータベースの対応するテーブルに保存されます。

Rails3を使用しています。

4

2 に答える 2

1

移行の例

class FillCarsAndUsers < ActiveRecord::Migration
  def self.up
    #if you have a Corresponding class for table 
    Corresponding.find(:all).each do |cor|
      #save data

      car = Car.create(...) #you may save old car id, if need "Car.create(:id => cor.car_id, ...)"
      User.create(:car_id => car.id, ...)
      ...
      User.create(:car_id => car.id, ...)
    end

  end

  def self.down
  end
end
于 2011-03-31T11:40:14.523 に答える
0

このようにしてみてください

data = {'car1' => ['user1', 'user2'], 'car2' => ['user3'], 'car3' => ['user4']}
data.each do |car, users|
  car_obj = Car.create(:name => car)
  users.each do |user|
    User.create(:name => user, :car_id => car_obj.id)
  end
end
于 2011-03-31T10:44:51.563 に答える