storext-override 0.0.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c83c83640824e13b8e307bb8afb861182e26a128
4
- data.tar.gz: 85b084bd733ca57e118fe4922549f6aa71a228dd
3
+ metadata.gz: b6c050186d5d8471b780a86cd84015ef73c91e59
4
+ data.tar.gz: f40b396043d031e38b788936f01459bae9df03f9
5
5
  SHA512:
6
- metadata.gz: 2e5dbff6348d395536cafb1d0c752bfc5f3d1715a29c446c2f168e300821207e2e450a31c12251594e9d993e83ec2032a0eb77822dbe15da370a704937464101
7
- data.tar.gz: 0abd9931c9ca371f5ef76376a67092183aef6c59c2e5f222262dfa31739f982ad34e549a752a600e8f27a37135d0ba384acf44245ed2bf3a66c8d7f6ecda2ee8
6
+ metadata.gz: 249516b1136e3e6e878923b9b94b97b2fd9665c4043769aa05b95a88f20745427aaee526e929fb1d136b418e738303cf140659a5df1fc375eeb2e0b8e09168ff
7
+ data.tar.gz: 4595bb92ac01adc8e3e83089b638398a448a70c591a930e173d46cabe8d0308dbacd834f7fc69a9bccd45252de05ce1e2e109d8dd693f0cbe86ebec9cafacbdf
@@ -18,7 +18,7 @@ module Storext
18
18
  storext_definitions = association_class.storext_definitions
19
19
  storext_definitions.each do |attr, attr_definition|
20
20
  if attr_definition[:column] == column_name
21
- storext_overrider_define_reader(
21
+ storext_overrider_accessor(
22
22
  association_name,
23
23
  column_name,
24
24
  attr,
@@ -36,7 +36,7 @@ module Storext
36
36
  end
37
37
  end
38
38
 
39
- def storext_overrider_define_reader(association_name, column_name, attr, attr_definition)
39
+ def storext_overrider_accessor(association_name, column_name, attr, attr_definition)
40
40
  self.store_attribute(
41
41
  column_name,
42
42
  attr,
@@ -44,9 +44,55 @@ module Storext
44
44
  attr_definition[:opts].reject { |k,v| k == :default },
45
45
  )
46
46
 
47
- define_method attr do |*args|
48
- super(*args) || send(association_name).send(attr)
47
+ storext_overrider_define_override_control(column_name, attr)
48
+ storext_overrider_define_reader(association_name, column_name, attr)
49
+ storext_overrider_define_writer(column_name, attr)
50
+ end
51
+
52
+ def storext_overrider_define_reader(association_name, column_name, attr)
53
+ define_method :"#{attr}_with_parent_default" do |*args|
54
+ if storext_has_key?(column_name, attr)
55
+ send(:"#{attr}_without_parent_default", *args)
56
+ else
57
+ send(association_name).send(attr)
58
+ end
59
+ end
60
+ alias_method_chain :"#{attr}", :parent_default
61
+ end
62
+
63
+ def storext_overrider_define_writer(column_name, attr)
64
+ define_method :"#{attr}_with_override_control=" do |*args|
65
+ if instance_variable_get("@override_#{attr}") == false
66
+ destroy_key(column_name, attr)
67
+ else
68
+ send(:"#{attr}_without_override_control=", *args)
69
+ end
70
+ end
71
+ alias_method_chain :"#{attr}=", :override_control
72
+ end
73
+
74
+ def storext_overrider_define_override_control(column_name, attr)
75
+ ivar = "@override_#{attr}"
76
+
77
+ define_method :"override_#{attr}=" do |bool|
78
+ if [0, '0', false].include?(bool)
79
+ destroy_key(column_name, attr)
80
+ instance_variable_set(ivar, false)
81
+ else
82
+ instance_variable_set(ivar, true)
83
+ end
49
84
  end
85
+
86
+ define_method :"override_#{attr}" do
87
+ value = instance_variable_get(ivar)
88
+ if value.nil?
89
+ storext_has_key?(column_name, attr)
90
+ else
91
+ value
92
+ end
93
+ end
94
+
95
+ alias_method "override_#{attr}?", :"override_#{attr}"
50
96
  end
51
97
  end
52
98
 
@@ -1,5 +1,5 @@
1
1
  module Storext
2
2
  module Override
3
- VERSION = "0.0.1"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: storext-override
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - G5
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-03-24 00:00:00.000000000 Z
13
+ date: 2015-06-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '1.0'
35
+ version: '1.1'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: '1.0'
42
+ version: '1.1'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: sqlite3
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  version: '0'
104
104
  requirements: []
105
105
  rubyforge_project:
106
- rubygems_version: 2.4.3
106
+ rubygems_version: 2.4.5
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Mimic and be able to override another Storext model