Невозможно получить грабли для добавления отдельных элементов в базу данных.

Я использую nokogiri для очистки и добавления информации в свою базу данных, и у меня возникли проблемы с созданием граблей для добавления отдельных элементов в базу данных. Мой исходный код был беспорядочным, поэтому я воссоздал ошибку, используя вместо этого массивы. Вот мой файл граблей.

namespace :test_array do
desc "Send Array To DB"
task send_db: :environment do

info_1 = []
info_2 = []
info_3 = []
info_4 = []

    10.times do 
        info_1 << "test_1"
        info_2 << "test_2"
        info_3 << "test_3"
        info_4 << "test_4"
    end

    info_1.each do |x|
    test_1 = TestDb.new(test_1: x)
    test_1.save
    end

    info_2.each do |x|
    test_2 = TestDb.new(test_2: x)
    test_2.save
    end

    info_3.each do |x|
    test_3 = TestDb.new(test_3: x)
    test_3.save
    end

    info_3.each do |x|
    test_3 = TestDb.new(test_3: x)
    test_3.save
    end
  end
 end

И это вывод консоли

[#<TestDb id: 1, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 2, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 3, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 4, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 5, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 6, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 7, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 8, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 9, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, #<TestDb id: 10, test_1: "test_1", test_2: nil, test_3: nil, test_4: nil, created_at: "2014-08-26 02:22:08", updated_at: "2014-08-26 02:22:08">, ...]>

Я не уверен, что мне не хватает, но только первый цикл добавляет информацию в БД, а остальные, кажется, игнорируются. Я пробовал запускать отдельные рейк-задачи, но это не сработало, я предполагаю, что это проблема с моим использованием метода.each, но я не уверен, как это исправить. Помощь будет принята с благодарностью.

1 ответ

Решение

Я использую это сейчас, это работает, но не уверен, что это лучше всего подходит.

info_1.zip(info_2, info_3, info_4).each do |one, two, three, four|      
  TestDb.create(test_1: one, test_2: two, test_3: three, test_4: four)   
end 
Другие вопросы по тегам