SimpleCsvImporter
Convert CSV data to instances of model and import to database easily.
Usage
- prepare model class
class User
attr_accessor :email, :name, :sex, :age
end
- create importer
class UserImporter
include SimpleImporter
assign :email, 'Email'
assign :name, ->(row) { "#{row['First Name']} #{row['Last Name']}" }
assign :sex, 'Sex' do |sex|
sexes = { 'Male' => 1, 'Female' => 2 }
sexes[sex]
end
assign :age, 'Age', &:to_i
end
- load csv and convert to instances of the model
importer = UserImporter.new
csv_text = <<-TEXT
Email,First Name,Last Name,Sex,Age,
[email protected],Alice,Abbot,Female,20
[email protected],Bob,Brown,Male,25
TEXT
importer.load(csv_text)
# =>
#[
# #<User:0x01 @age=20, @email="[email protected]", @name="Alice Abbot", @sex=2>,
# #<User:0x02 @age=25, @email="[email protected]", @name="Bob Brown", @sex=1>
#]