dump_to_seeds 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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