attribute-depends-calculator 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 610ef3f54cde8fa3b3d074bf14072dd40e343215
4
- data.tar.gz: d7f007351bf8cb3d93d58d5881f6ab701ca9719d
3
+ metadata.gz: 66b9287d6fec536e2108b37baa325bcde955ad62
4
+ data.tar.gz: c05a9d59ba0a5e81b33aa7c3b13cbabe43b45abc
5
5
  SHA512:
6
- metadata.gz: f9349e547e3c5b87bf6445aaf7243effa2367ed1b2ff2ababddcc323c96d58959e3ccc00f7f18b6c3407735182489ca0bf2dc01337199afd43e203ca52d0929f
7
- data.tar.gz: 2cee06a7cada6e7c99f39da8ae2de5a4157d5d510983ff0146cd54ae13a2286a717ef8ac25bef857d10b379d5db702be89de0863d2bff96c76c25714bc316eb0
6
+ metadata.gz: ec3f1cbfecc0889bf2507f8aa8df9df62ccf990ac9da3557b83132ff739d2f431012f1fe6dd29450d108b654997ccabd275134a63dfcb5e4c494ae21ab2ab415
7
+ data.tar.gz: 0e1fbca9e2a89e8383fb3e618c6ba66dd428c3b739118b3bd43ac9a791555c36e5ee43211f082f3e682b54d42814c932d62983399a7a2f25b1f093b264da7546
@@ -54,40 +54,31 @@ module AttributeDependsCalculator
54
54
  "calculate_and_update_#{column}"
55
55
  end
56
56
 
57
- def klass_assoc_name
58
- @assoc_name ||= association.reflect_on_all_associations.find {|assoc| assoc.plural_name == klass.table_name}.name
59
- end
60
-
61
57
  def fetch_association
62
- ObjectSpace.const_get klass.reflect_on_association(depend_association_name).class_name
58
+ klass.reflections[depend_association_name.to_s].class_name.constantize
63
59
  end
64
60
 
65
61
  def append_callbacks
66
62
  append_callback_hook
67
- define_callback_methods
68
63
  end
69
64
 
70
65
  def append_callback_hook
71
- self.association.class_eval <<-METHOD, __FILE__, __LINE__ + 1
72
- after_save :depends_update_#{column}
73
- around_destroy :depends_update_#{column}_around
74
- METHOD
66
+
67
+ association.after_save after_callback_proc
68
+ association.after_destroy after_callback_proc
69
+
75
70
  end
76
71
 
77
- def define_callback_methods
78
- self.association.class_eval <<-METHOD, __FILE__, __LINE__ + 1
79
- private
72
+ def after_callback_proc
80
73
 
81
- def depends_update_#{column}
82
- self.#{klass_assoc_name}.#{calculate_method_name}
83
- end
74
+ method_name = calculate_method_name
75
+ klass_name = klass.name
76
+
77
+ lambda { |record|
78
+ attr_name = record.class.reflect_on_all_associations.find {|assoc| assoc.class_name == klass_name}.name
79
+ record.public_send(attr_name).send(method_name)
80
+ }
84
81
 
85
- def depends_update_#{column}_around
86
- _relation = self.#{klass_assoc_name}
87
- yield
88
- _relation.#{calculate_method_name}
89
- end
90
- METHOD
91
82
  end
92
83
 
93
84
  end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module AttributeDependsCalculator
3
- VERSION = '0.3'
3
+ VERSION = '0.4'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attribute-depends-calculator
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Hou
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-13 00:00:00.000000000 Z
11
+ date: 2017-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler