рельсы 3, новая модель B - 1: 1 со старой моделью A, как автоматически создать новую запись B для каждой уже существующей записи A - PullRequest
0 голосов
/ 03 февраля 2011

Rails v3.0.3 Исходная схема содержит таблицу клиентов , а приложение содержит данные для 100 клиентов.

через миграцию мы добавляем cust_info таблицу с 1: 1, например:

customers has_one cust_info 
cust_info belongs_to customers

поэтому сейчас (после запуска rake db:migrate для создания новой модели) у нас есть 100 «старых» customer записей, которые не имеют обязательной записи 1: 1 cust_info .

QUES (1a) (устаревшее обновление данных), каков "путь рельсов" для создания требуемой (пустой) cust_info записи для каждой из наших 100 существующих записей клиентов ?

QUES (2) (в дальнейшем), как нам изменить наше приложение, чтобы при создании НОВОЙ customer записи оно автоматически одновременно создавало связанную запись cust_info ?

1 Ответ

1 голос
/ 03 февраля 2011

Q1: Поскольку у вас небольшой набор данных, я бы работал в консоли:

Customer.all.each do |c|
   c.create_cust_info.save
end

Q2: используйте следующий обратный вызов: after_create в вашей модели клиента и создайте cust_info внутри

...