mongoid_max_denormalize 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,7 +22,7 @@ module Mongoid
22
22
  klass.field "#{relation}_count", type: Integer, default: 0
23
23
  end
24
24
 
25
- callback_code = <<EOM
25
+ klass.class_eval <<-EOM, __FILE__, __LINE__
26
26
  before_create :denormalize_from_#{relation}
27
27
 
28
28
  def denormalize_from_#{relation}(force=false)
@@ -53,14 +53,17 @@ module Mongoid
53
53
 
54
54
  nil
55
55
  end
56
- EOM
57
- klass.class_eval callback_code
56
+ EOM
58
57
 
59
- callback_code = <<EOM
58
+ meta.klass.class_eval <<-EOM, __FILE__, __LINE__
60
59
  around_save :denormalize_to_#{inverse_relation}
61
60
 
62
61
  def denormalize_to_#{inverse_relation}
63
- return if !changed? && !new_record?
62
+ if !changed? && !new_record?
63
+ yield if block_given?
64
+ return
65
+ end
66
+
64
67
  was_new = new_record?
65
68
  was_added = false
66
69
  was_removed = false
@@ -219,8 +222,7 @@ EOM
219
222
  to_update.reject! {|k,v| v.empty?}
220
223
  #{klass}.collection.find(:_id => remote_id).update_all(to_update) unless to_update.empty?
221
224
  end
222
- EOM
223
- meta.klass.class_eval callback_code
225
+ EOM
224
226
  end
225
227
 
226
228
  def allowed_options
@@ -11,11 +11,11 @@ module Mongoid
11
11
  klass.field "#{relation}_#{field}", type: field_meta.try(:type)
12
12
  end
13
13
 
14
- callback_code = <<EOM
14
+ klass.class_eval <<-EOM, __FILE__, __LINE__
15
15
  before_save :denormalize_from_#{relation}
16
16
 
17
17
  def denormalize_from_#{relation}
18
- return unless #{meta.key}_changed?
18
+ return true unless #{meta.key}_changed?
19
19
 
20
20
  fields = [#{Base.array_code_for(fields)}]
21
21
  if #{meta.key}.nil?
@@ -30,14 +30,16 @@ module Mongoid
30
30
 
31
31
  true
32
32
  end
33
- EOM
34
- klass.class_eval callback_code
33
+ EOM
35
34
 
36
- callback_code = <<EOM
35
+ meta.klass.class_eval <<-EOM, __FILE__, __LINE__
37
36
  around_save :denormalize_to_#{inverse_relation}
38
37
 
39
38
  def denormalize_to_#{inverse_relation}(force = false)
40
- return unless changed? || force
39
+ unless changed? || force
40
+ yield if block_given?
41
+ return
42
+ end
41
43
 
42
44
  fields = [#{Base.array_code_for(fields)}]
43
45
  fields_only = [#{Base.array_code_for(fields_only)}]
@@ -76,10 +78,9 @@ EOM
76
78
  to_set[:"#{relation}_\#{field}"] = nil
77
79
  end
78
80
 
79
- #{inverse_relation}.update to_set
81
+ #{inverse_relation}.update(to_set) unless to_set.empty?
80
82
  end
81
- EOM
82
- meta.klass.class_eval callback_code
83
+ EOM
83
84
  end
84
85
 
85
86
  end
@@ -4,7 +4,7 @@ module Mongoid
4
4
  module Denormalize
5
5
  module Version
6
6
 
7
- STRING = '0.0.4'
7
+ STRING = '0.0.5'
8
8
 
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_max_denormalize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: