mirror of
https://github.com/CodeforLeipzig/stadtratmonitor.git
synced 2024-12-22 15:43:14 +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.
|
||||
|
||||
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|
|
||||
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