attribute-depends-calculator 0.3 → 0.4

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.
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