csv_importer 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +5 -0
- data/lib/csv_importer/csv_importer.rb +9 -2
- data/spec/csv/sample.csv +13 -5
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -34,6 +34,11 @@ For use with ActiveRecord objects you can provide an argument to call save on ev
|
|
34
34
|
|
35
35
|
products = importer.object(true)
|
36
36
|
|
37
|
+
The attributes of ActiveRecord objects are assigned using update_attributes for increased security.
|
38
|
+
|
39
|
+
Beware, that if the model is not an ActiveRecord model mass assigning attributes by CSV column name might impose a security risk if you don't know the exact names of the CSV columns.
|
40
|
+
|
41
|
+
In a next release a stripped down version of active records "attr_accessible" will be bundled with the gem.
|
37
42
|
|
38
43
|
== REQUIREMENTS:
|
39
44
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module CSVImporter
|
2
|
-
VERSION = "0.0.
|
2
|
+
VERSION = "0.0.2"
|
3
3
|
require 'csv'
|
4
4
|
|
5
5
|
|
@@ -19,14 +19,21 @@ module CSVImporter
|
|
19
19
|
def objects(save=false)
|
20
20
|
return @objects if !@objects.nil?
|
21
21
|
@objects = Array.new if @object.nil?
|
22
|
+
|
22
23
|
first = true
|
23
24
|
@reader.each do |row|
|
24
25
|
#TODO: Ruby 1.9 has header option would be nicer instead of this hack.
|
25
26
|
if !first
|
26
27
|
object = @klass.new
|
28
|
+
active_record = object.respond_to?(:update_attributes)
|
29
|
+
attribute_hash = {} if active_record
|
27
30
|
@columns.each_pair do |column, row_number|
|
28
|
-
|
31
|
+
value = row[row_number]
|
32
|
+
value = value.strip if !value.nil?
|
33
|
+
object.send("#{column}=", value) if !active_record
|
34
|
+
attribute_hash[column] = value if active_record
|
29
35
|
end
|
36
|
+
object.attributes = attribute_hash if active_record
|
30
37
|
object.save if save
|
31
38
|
@objects << object
|
32
39
|
else
|
data/spec/csv/sample.csv
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
Description;Brand;SellPrice;SalePrice;Image;Category;ArticleCode
|
2
|
-
SINGLE JERSEY L.S R;PME Jeans; 59.95; 59.95;http://www.
|
3
|
-
MONTANA L.SL. GRAND;PME legend; 59.95; 59.95;http://www.
|
4
|
-
CO DOUBLE JERSEY, 1;Cast Iron; 29.95; 29.95;http://www.
|
5
|
-
PLAYER L.SLV. VEST;Cast Iron; 99.95; 99.95;http://www.
|
6
|
-
SLUBOR L.SL POLO;Cast Iron; 79.95; 79.95;http://www.
|
2
|
+
SINGLE JERSEY L.S R;PME Jeans; 59.95; 59.95;http://www.softwear.nl/ism/bouchier/images/JTS91573.JPG;T-shirts;JTS91573
|
3
|
+
MONTANA L.SL. GRAND;PME legend; 59.95; 59.95;http://www.softwear.nl/ism/bouchier/images/PTS88510.JPG;T-shirts;PTS88510
|
4
|
+
CO DOUBLE JERSEY, 1;Cast Iron; 29.95; 29.95;http://www.softwear.nl/ism/bouchier/images/CAC91101.JPG;Belts/ Keyholders;CAC91101
|
5
|
+
PLAYER L.SLV. VEST;Cast Iron; 99.95; 99.95;http://www.softwear.nl/ism/bouchier/images/CKW91406.JPG;Knitwear;CKW91406
|
6
|
+
SLUBOR L.SL POLO;Cast Iron; 79.95; 79.95;http://www.softwear.nl/ism/bouchier/images/CPS91301.JPG;Polo l.sl;CPS91301
|
7
|
+
BEAR CLAW FLOWER -;Cast Iron; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/CSI91601.JPG;Shirts;CSI91601
|
8
|
+
KHENSU LSE - MULTI;Cast Iron; 129.95; 129.95;http://www.softwear.nl/ism/bouchier/images/CTR91202-960.JPG;Pants;CTR91202-960
|
9
|
+
NYLON FLIGHT BOMBER;PME legend; 179.95; 179.95;http://www.softwear.nl/ism/bouchier/images/JA86112.JPG;Jackets;JA86112
|
10
|
+
RATON LONG JACKET;Vanguard; 239.95; 239.95;http://www.softwear.nl/ism/bouchier/images/VJA86149.JPG;Jackets;VJA86149
|
11
|
+
OXFORD PANT, COTTON;Vanguard; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/VTR86422-739.JPG;Pants;VTR86422-739
|
12
|
+
MERIDIAN S.SL R-NEC;Vanguard; 49.95; 49.95;http://www.softwear.nl/ism/bouchier/images/VTSS86301.JPG;T-shirts;VTSS86301
|
13
|
+
;PME legend; 24.95; 24.95;http://www.softwear.nl/ism/bouchier/images/PAC91002.JPG;Belts/ Keyholders;PAC91002
|
14
|
+
COTTON PLAITED V-NE;PME legend; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/PKW91339.JPG;Knitwear;PKW91339
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csv_importer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sparkboxx
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-05 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|