Я пытаюсь посеять около 100 000 пользователей, используя rake db: seed в моем проекте Rails 3, и это действительно медленно!
Вот пример кода:
# ...
User.create!(
:display_name => "#{title} #{name} #{surname}",
:email => "#{name}.#{surname}_#{num}@localtinkers.com",
:password => '12341234'
)
Это работает, но это очень медленно , потому что для каждого пользователя:
- Devise выдает инструкцию SELECT, чтобы выяснить, занято ли уже письмо.
- Отдельная INSERTВыдается оператор.
Для других объектов я использую драгоценные камни " ar-extensions " и " activerecord-import " следующим образом:
tags.each do |tag|
all_tags << Tag.new(:name => tag)
end
Tag.import(all_tags, :validate => false, :ignore => true)
Вышеуказанное создает только один оператор INSERT для всех тегов, и он работает очень быстро , так же, как восстановление базы данных MySql из дампа SQL.
Но для пользователей я не могу этого сделатьпотому что мне нужен Devise для генерации зашифрованного пароля, соли и т.д. для каждого пользователя.Есть ли способ генерировать их на стороне SQL или есть другие эффективные способы заполнения пользователей?
Спасибо.