Какова наилучшая практика для обновления данных семян рельсов - PullRequest
6 голосов
/ 22 декабря 2011

У меня есть применение рельсов в производстве с данными семян. Нам нужно добавить больше начальных данных, но использование rake db:populate будет реплицировать все старые начальные данные, и, конечно, мы не хотим добавлять эти данные в миграции.

Каков наилучший метод добавления дополнительных начальных данных в приложение?

Ответы [ 4 ]

2 голосов
/ 12 мая 2014

Стой на плечах великанов

Посмотрите на камень SeedFu .

Позволяет вам создать такой начальный файл, который автоматически связывается с одним или несколькими столбцами:

User.seed(:id,
  { id: 1, login: 'jon',   email: 'jon@example.com',   name: 'Jon'   },
  { id: 2, login: 'emily', email: 'emily@example.com', name: 'Emily' }
)

Вы также можете обновить эти начальные файлы, и он будет обрабатывать обновление значений БД.

Это, в сочетании с Seedbank , я и использовал в итоге.

1 голос
/ 22 декабря 2011

Я использую неуклюжий обходной путь в моем начальном файле, чтобы остановить добавление одних и тех же данных дважды.

if Therapy.count == 0
    therapies = Therapy.create([
        { :name => 'Peritoneal dialysis'
        },
        { :name => 'Haemodialysis'
        },
        { :name => 'Plasma therapy'
        },
        { :name => 'Laparotomy'
        },
        { :name => 'Haemofiltration'
        }
        ])
end

Полагаю, это можно изменить на следующее

   if Therapy.count == 0
                therapies = Therapy.create([
                    { :name => 'Peritoneal dialysis'
                    },
                    { :name => 'Haemodialysis'
                    },
                    { :name => 'Plasma therapy'
                    },
                    { :name => 'Laparotomy'
                    },
                    { :name => 'Haemofiltration'
                    }
                    ])
    elsif Therapy.count == 4
              therapies = Therapy.create([
                    { :name => 'NEW THERAPY'
                    }
                    ])
    end
1 голос
/ 22 декабря 2011

Вам, вероятно, придется построить еще одно задание по рейку. Или вы можете просто проверить каждую новую строку, чтобы увидеть, существует ли она уже. Это может занять больше времени, но, по крайней мере, у вас не будет дубликатов.

0 голосов
/ 18 января 2012

Если вы считаете, что для чего-то должна быть задача rake, вы можете проверить доступные задачи.

rake -T seed
rake db:seed  # Load the seed data from db/seeds.rb

При этом seed_fu обеспечивает гораздо лучшую функциональность IMHO

...