Я следовал этому фантастическому учебнику о массовой вставке данных. Все хорошо, время транзакций сократилось с 30 секунд до 1:)
Я просто не знаю, как заполнить поля в дочерней модели:
has_many :check, :dependent => :destroy
accepts_nested_attributes_for :check, :reject_if => lambda { |a| a[:value].blank? }, :allow_destroy => true
Ранее я использовал это:
...
User.create!(:username => username, :check_attributes => [ {:attribute_name => "User-Password", :value => password, :op => ":="}])
...
С тех пор как я перешел на другой метод, я теперь получил это в моей пользовательской модели:
def self.activerecord_extensions_mass_insert(validate = true)
columns = [:username]
values = []
10000.times do
username = ""
5.times { username << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
values.push [username]
end
User.import columns, values, {:validate => validate}
end
Я пытался использовать этот и несколько других вариантов без успеха ...
columns = [:username, :check_attributes => [ :attribute_name, :value, :op]]
Есть предложения?