Как вставить два связанных экземпляра в соответствующие таблицы с помощью миграции? - PullRequest
1 голос
/ 31 марта 2011

У меня есть две модели ActiveRecode, Автомобиль и Пользователь , который имеет многозначную связь:

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

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

И у меня есть две таблицы в базе данных, машины и пользователи . пользователи таблица имеет атрибут car_id

Я хотел бы иметь миграцию, которая будет вставлять экземпляр машины в таблицу cars , , в то время как , будет создан экземпляр пользователя, который связан с экземпляром car и затем будет вставлен в таблицу users . Как это сделать при миграции?

Таким образом, при выполнении этой миграции экземпляр автомобиля и связанный с ним экземпляр пользователя будут сохранены в соответствующих таблицах в базе данных.

Я использую Rails 3.

Ответы [ 2 ]

1 голос
/ 31 марта 2011

пример миграций

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
0 голосов
/ 31 марта 2011

Попробуйте вот так

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...