Add Paper model, Paper.import_from_csv

This commit is contained in:
Andreas Haller 2015-04-13 22:09:28 +02:00
parent f661631dd9
commit d39f00165e
4 changed files with 56 additions and 1 deletions

19
app/models/paper.rb Normal file
View file

@ -0,0 +1,19 @@
require 'csv'
class Paper < ActiveRecord::Base
class << self
def import_from_csv(csv_string)
CSV.parse(csv_string, headers: true) do |row|
attributes = {
name: row['name'],
url: row['url'],
reference: row['reference'],
paper_type: row['paper_type'],
originator: row['originator'],
published_at: row['published_at'],
}
create!(attributes)
end
end
end
end

View file

@ -0,0 +1,17 @@
class CreatePapers < ActiveRecord::Migration def change
create_table :papers do |t|
t.string :name
t.string :url
t.string :reference
t.string :name
t.datetime :published_at
t.datetime :scraped_at
t.string :paper_type
t.string :originator
t.text :resolution
t.text :content
t.timestamps
end
end
end

View file

@ -11,7 +11,19 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20141117201926) do ActiveRecord::Schema.define(version: 20150413193656) do
create_table "papers", force: true do |t|
t.string "name"
t.string "url"
t.string "reference"
t.datetime "published_at"
t.datetime "scraped_at"
t.string "paper_type"
t.string "originator"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "users", force: true do |t| create_table "users", force: true do |t|
t.string "email" t.string "email"

View file

@ -0,0 +1,7 @@
namespace :import_papers do
desc 'Import Paper records from CSV'
task :from_csv, [:csv_file] => :environment do |t, args|
Paper.import_from_csv(File.read(args[:csv_file]))
end
end