dump_to_seeds 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,9 @@
1
1
  module DumpToSeeds::BaseExt
2
2
 
3
- def to_seed(includes = [])
4
- if includes.blank?
3
+ def to_seed(includes = [], opts = {})
4
+ @dump_options = {:save_id => false}.merge(opts)
5
+
6
+ if includes.blank? && !@dump_options[:save_id]
5
7
  build_simple_rb(self)
6
8
  else
7
9
  dump_object(self, includes)
@@ -16,21 +18,39 @@ module DumpToSeeds::BaseExt
16
18
 
17
19
  dump_arr = []
18
20
  var_name = obj.class.name.underscore
19
- dump_arr << "#{var_name} = #{build_simple_rb(obj, !(parent_var && rel_key))}"
21
+ var_name += "_#{obj.id}"
22
+
23
+ dump_arr << "#{var_name} = #{build_simple_rb(obj, (!(parent_var && rel_key) && !@dump_options[:save_id]))}"
20
24
 
21
- if(parent_var && rel_key)
22
- dump_arr << "#{var_name}.#{rel_key} = #{parent_var}.id"
25
+ if((parent_var && rel_key) || @dump_options[:save_id])
26
+ if(@dump_options[:save_id])
27
+ dump_arr << "#{var_name}.id = #{obj.id}"
28
+ end
29
+ if(parent_var && rel_key)
30
+ dump_arr << "#{var_name}.#{rel_key} = #{parent_var}.id"
31
+ end
23
32
  dump_arr << "#{var_name}.save"
24
33
  end
25
34
 
26
35
  includes.each do |i|
27
36
  rel, next_ass = i.is_a?(Hash) ? i.to_a.first : [i, []]
28
37
 
29
- refl = obj.class.reflect_on_association(rel)
30
- if refl
31
- rel_objs = [obj.send(rel)].flatten.compact
32
- rel_objs.each do |ro|
33
- dump_arr << dump_object(ro, next_ass, var_name, refl.primary_key_name)
38
+ if rel.to_s =~ /!$/
39
+ m_name = rel.to_s.gsub(/!$/, '')
40
+ if obj.respond_to?(m_name)
41
+ rel_objs = [obj.send(m_name)].flatten.compact
42
+ rel_objs.each do |ro|
43
+ p_key = next_ass.to_s
44
+ dump_arr << dump_object(ro, includes, var_name, p_key)
45
+ end
46
+ end
47
+ else
48
+ refl = obj.class.reflect_on_association(rel)
49
+ if refl
50
+ rel_objs = [obj.send(rel)].flatten.compact
51
+ rel_objs.each do |ro|
52
+ dump_arr << dump_object(ro, next_ass, var_name, refl.primary_key_name)
53
+ end
34
54
  end
35
55
  end
36
56
  end
@@ -1,3 +1,3 @@
1
1
  module DumpToSeeds
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 2
10
- version: 0.0.2
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dmitri Chromov