如何使用迁移将两个关联的实例插入到相应的表中?

时间:2011-03-31 10:29:05

标签: ruby-on-rails ruby-on-rails-3 rails-migrations

我有两个ActiveRecode模型, Car 用户,它们具有多对一关联:

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

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

而且,我在数据库中有两个表,汽车用户用户表的属性为 car_id

我希望进行迁移,将汽车实例插入汽车表,同时,将创建​​一个与之关联的用户实例然后将汽车实例插入用户表。 如何在迁移中执行此操作?

通过运行此迁移,汽车实例及其关联的用户实例都将存储在数据库中的相应表中。

我正在使用Rails 3。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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