superseeder 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/superseeder/formats/roo.rb +13 -5
- data/lib/superseeder/version.rb +1 -1
- data/test/adapters/mongoid.rb +2 -0
- data/test/adapters/schema.rb +2 -1
- data/test/dummy/db/seeds/data/parkings_with_cars.csv +5 -5
- data/test/dummy/db/seeds/data/parkings_without_cars.csv +5 -5
- data/test/dummy/log/test.log +3351 -0
- data/test/superseeder/formats/roo_test.rb +46 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03b335cbdc74fa78d545de5ebda3234d44be8bbc
|
4
|
+
data.tar.gz: 65b97195ec9093ea27e516f22c44eafc6d19f90b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0eb50168fe34841393e7b04bd7f42663d41a75c191ce66e7e0b16febb55709f047d2263e4b54d65f1927dca5ad781e1ef44d3f332002ff421aaa69a3d601b55f
|
7
|
+
data.tar.gz: e2031f83186272ccac6261c5ba93a57ac715d0d061d3bf2cc8773c2ee2607b5ccec5f8e53fddd6e7719a403dc216684f963d18777e8434b203aa0ae129078929
|
@@ -17,6 +17,7 @@ module Superseeder
|
|
17
17
|
|
18
18
|
opts = args.extract_options!
|
19
19
|
many_sep = opts.delete(opts[:many_sep]) || ','
|
20
|
+
update = opts.delete :update_by
|
20
21
|
|
21
22
|
s = EXTENSIONS[File.extname(path)].constantize.new path.to_s, opts
|
22
23
|
header = s.row s.first_row
|
@@ -27,15 +28,18 @@ module Superseeder
|
|
27
28
|
if block_given?
|
28
29
|
yield row
|
29
30
|
else
|
30
|
-
instance =
|
31
|
-
|
31
|
+
instance = row['_type'].blank? ? self : row['_type'].constantize
|
32
|
+
instance = if update
|
33
|
+
i = instance.find_by(update => row[update])
|
34
|
+
i || instance.new
|
32
35
|
else
|
33
|
-
|
34
|
-
end
|
36
|
+
instance.new
|
37
|
+
end
|
35
38
|
|
36
39
|
require 'superseeder/adapter'
|
37
40
|
adapter = ::Superseeder::Adapter.new instance
|
38
41
|
|
42
|
+
save_relations = []
|
39
43
|
# Set relations
|
40
44
|
adapter.each_relation do |name, is_array, class_name|
|
41
45
|
attrs = row.select{ |k, _| k =~ /\A#{name}_/ }
|
@@ -47,7 +51,9 @@ module Superseeder
|
|
47
51
|
end
|
48
52
|
vals.flatten!
|
49
53
|
vals.compact!
|
54
|
+
vals = vals | instance.send(name)
|
50
55
|
instance.send "#{name}=", vals
|
56
|
+
save_relations.concat vals if defined? Mongoid::Document && instance.kind_of?(Mongoid::Document) # Not really nice, TODO FIX through adapter
|
51
57
|
else
|
52
58
|
instance.send "#{name}=", class_name.find_by(attrs)
|
53
59
|
end
|
@@ -64,7 +70,9 @@ module Superseeder
|
|
64
70
|
end
|
65
71
|
|
66
72
|
if instance.valid?
|
67
|
-
instance.save
|
73
|
+
instance.save if instance.changed?
|
74
|
+
save_relations.uniq!
|
75
|
+
save_relations.each(&:save)
|
68
76
|
else
|
69
77
|
Rails.logger.debug "Skipped #{row} : #{instance.errors.full_messages}"
|
70
78
|
end
|
data/lib/superseeder/version.rb
CHANGED
data/test/adapters/mongoid.rb
CHANGED
data/test/adapters/schema.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
name,cars_name
|
2
|
-
North,Mustang
|
3
|
-
East
|
4
|
-
South,"Corvette,BMW"
|
5
|
-
West
|
1
|
+
name,cars_name,size
|
2
|
+
North,Mustang,50
|
3
|
+
East,,40
|
4
|
+
South,"Corvette,BMW",30
|
5
|
+
West,,20
|
@@ -1,5 +1,5 @@
|
|
1
|
-
name
|
2
|
-
North
|
3
|
-
East
|
4
|
-
South
|
5
|
-
West
|
1
|
+
name,size
|
2
|
+
North,50
|
3
|
+
East,40
|
4
|
+
South,30
|
5
|
+
West,20
|