У меня есть следующий код, который разбирает таблицу HTML настолько просто, насколько это возможно.
# Timestamp (Column 1 of the table)
page = agent.page.search("tbody td:nth-child(1)").each do |item|
Call.create!(:time => item.text.strip)
end
# Source (Column 2 of the table)
page = agent.page.search("tbody td:nth-child(2)").each do |item|
Call.create!(:source => item.text.strip)
end
# Destination (Column 3 of the table)
page = agent.page.search("tbody td:nth-child(3)").each do |item|
Call.create!(:destination => item.text.strip)
end
# Duration (Column 4 of the table)
page = agent.page.search("tbody td:nth-child(4)").each do |item|
Call.create!(:duration => item.text.strip)
end
Хотя приведенный выше код работает хорошо, он рассматривает каждый «элемент» как новую запись. Таким образом, он добавляет запись для каждой строки времени, другую запись для каждого столбца источника и т. Д.
Какой самый простой способ сделать так, чтобы цикл повторял вышеуказанный код, но добавив четыре элемента в одну запись и затем перейдя к следующей записи?
Для дополнительной информации вот файл миграции, который показывает мою структуру базы данных:
class CreateCalls < ActiveRecord::Migration
def change
create_table :calls do |t|
t.datetime :time
t.string :source
t.string :destination
t.string :duration
t.timestamps
end
end
end
Любая помощь приветствуется.