storext-override 0.2.0 → 0.4.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: 5c93086218e4ca329cb9a62bd6bf697103bd06f7
4
- data.tar.gz: 30a40760d63e45e8b36b1605e4d297c9ac90a4d9
3
+ metadata.gz: c0d6e6fc1337b4b96e0fc1cbd39bf5700033dcf6
4
+ data.tar.gz: cde3e28318a214bc3f091380cc87294edd4f5f6a
5
5
  SHA512:
6
- metadata.gz: c5d6a41c869423a68741834136e2b1af63c28f5d30ca8713a8b19222db42a7127ea6d3ebb40fc25f2e564c472deb5882af1ad129c850a862eae62f3aeaf653e0
7
- data.tar.gz: a8ce92acdf8f7d1689f1913f1aa243211e770793785bac7d2b59a0022349522a504a209b370c840e2362202769e79794960dde9ddf88b180b2d784d6cdeaae43
6
+ metadata.gz: 8c529752d04d17454ed87c5765f970c5457a310a66872943b82905dad5edfa59860ce310b4a8ee7ca1039f7ad6ecbedd71a378a03cee28b06c9babd5511c7d2e
7
+ data.tar.gz: 840240376d10ed1be22affa0eebcb19a539cb0f1ca512067e8c5c50537be85eb441da0114fdc89c4d5ea79bd1c78d5c244cf883f78e871340f8a12a778d48e4f
@@ -6,13 +6,25 @@ module Storext
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  included do
9
- include Storext.model
9
+ include Storext.model unless self.respond_to? :storext_options
10
+ end
11
+
12
+ def storext_override_discard_value?(attr)
13
+ send(:"#{attr}_without_parent_default").blank? &&
14
+ self.class.override_options[:ignore_override_if_blank]
10
15
  end
11
16
 
12
17
  module ClassMethods
13
- def storext_override(association_name, column_name, opts = {})
14
- origin_class = if opts[:class]
15
- opts[:class]
18
+
19
+ attr_accessor :override_options
20
+
21
+ def storext_override(association_name, column_name, override_options = {})
22
+ self.override_options = {
23
+ ignore_override_if_blank: false
24
+ }.merge(override_options)
25
+
26
+ origin_class = if override_options[:class]
27
+ override_options[:class]
16
28
  else
17
29
  association =
18
30
  storext_overrider_find_association(association_name)
@@ -81,7 +93,7 @@ module Storext
81
93
  ivar = "@override_#{attr}"
82
94
 
83
95
  define_method :"override_#{attr}=" do |bool|
84
- if [0, '0', false].include?(bool)
96
+ if [0, '0', false].include?(bool) || storext_override_discard_value?(attr)
85
97
  destroy_key(column_name, attr)
86
98
  instance_variable_set(ivar, false)
87
99
  else
@@ -1,5 +1,5 @@
1
1
  module Storext
2
2
  module Override
3
- VERSION = "0.2.0"
3
+ VERSION = '0.4.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.2.0
4
+ version: 0.4.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-08-26 00:00:00.000000000 Z
13
+ date: 2016-02-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -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.5
106
+ rubygems_version: 2.4.6
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Mimic and be able to override another Storext model