mirror of
https://github.com/CodeforLeipzig/stadtratmonitor.git
synced 2024-12-22 23:53:15 +01:00
Add Paper model, Paper.import_from_csv
This commit is contained in:
parent
f661631dd9
commit
d39f00165e
4 changed files with 56 additions and 1 deletions
19
app/models/paper.rb
Normal file
19
app/models/paper.rb
Normal 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
|
17
db/migrate/20150413193656_create_papers.rb
Normal file
17
db/migrate/20150413193656_create_papers.rb
Normal 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
|
14
db/schema.rb
14
db/schema.rb
|
@ -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"
|
||||||
|
|
7
lib/tasks/import_papers.rake
Normal file
7
lib/tasks/import_papers.rake
Normal 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
|
Loading…
Reference in a new issue