acts_as_inheritable 0.5.0 → 0.6.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: 391d2159779c617d4641194c7a9e49585763661f
4
- data.tar.gz: 96ff7393944b993f84b0976e31e88b38669fcc62
3
+ metadata.gz: 7ae0ca518afeef42a5feed9fa8fb300118aa7544
4
+ data.tar.gz: ae752687e79850a03b92bca3d6ff668a212b916a
5
5
  SHA512:
6
- metadata.gz: e3bfcbbc59f32c2205ffa8debfa389d5ef5301b2fc641ad8ba38fe9b0cbf356b0d6727039451b3ca545f02c07b28063bd81d9cebfac4f23fc5cbea9ed433851a
7
- data.tar.gz: 6d4c676e640ac8f32c8b8ce100446a38cef44702a5c5e8196c0150ca7ad2d6ec372e9030430ccd8e3c40d46880d030335956f819036765c3bd582d894b659b5a
6
+ metadata.gz: bcdec1699a2fed4f76e282e1fc42fe24195f4bcbec246803e1070901e641febe881bebce3166fa439a0d183f40b2dae65f5f1d8c7e4e2bd4ba08c1c89f4fdbcd
7
+ data.tar.gz: 9b210ad22a2ed22641dad41299ca2d2f66cfdc4611153c739aea076f2229ddcfe2fa00cbee3e60b18ebec63ebce5e1baf0287fc2bb6aaed67af1d8e08b24cca0
data/README.md CHANGED
@@ -68,13 +68,14 @@ son.favorite_color # => Green
68
68
  By adding `acts_as_inheritable` to your models you will have access to these methods:
69
69
 
70
70
  #### inherit_attributes
71
- > Signature `inherit_attributes(force = false, not_force_for=[])`
71
+ > Signature `inherit_attributes(force = false, not_force_for = [], use_update = false)`
72
72
 
73
73
  By default this method will only set values that are [blank?](http://api.rubyonrails.org/classes/Object.html#method-i-blank-3F).
74
74
 
75
75
  ###### params
76
76
  - `force`: Default to true. Set the attribute even if it's _present_.
77
77
  - `not_force_for`: Default to empty array. When setting `force` to _true_, you can also specify the attributes you don't want to overwrite.
78
+ - `use_update`: Default to false. Uses the `update_attributes` method instead of the normal asignation (`"#{attribute}="`). This is useful if you're using __inherit_attributes__ inside a `after_save` callback for example.
78
79
 
79
80
  #### inherit_relations
80
81
  > Signature `inherit_relations(model_parent = send(:parent), current = self)`
@@ -73,13 +73,17 @@ module ActsAsInheritable
73
73
  parent_name
74
74
  end
75
75
 
76
- def inherit_attributes(force = false, not_force_for = [])
76
+ def inherit_attributes(force = false, not_force_for = [], use_update = false)
77
77
  if has_parent? && self.class.inheritable_configuration[:attributes]
78
78
  # Attributes
79
79
  self.class.inheritable_configuration[:attributes].each do |attribute|
80
80
  current_val = send(attribute)
81
81
  if (force && !not_force_for.include?(attribute)) || current_val.blank?
82
- send("#{attribute}=", parent.send(attribute))
82
+ if use_update
83
+ update_attributes(attribute => parent.send(attribute))
84
+ else
85
+ send("#{attribute}=", parent.send(attribute))
86
+ end
83
87
  end
84
88
  end
85
89
  end
@@ -91,5 +95,4 @@ module ActsAsInheritable
91
95
  # Extend ActiveRecord's functionality
92
96
  ActiveRecord::Base.send :extend, ActsAsInheritable
93
97
  end
94
-
95
98
  end
@@ -1,3 +1,3 @@
1
1
  module ActsAsInheritable
2
- VERSION = "0.5.0"
2
+ VERSION = '0.6.0'
3
3
  end
@@ -53,6 +53,17 @@ RSpec.describe "ActiveRecord::Base model with #acts_as_inheritable" do
53
53
  end
54
54
  end
55
55
  end
56
+ context 'when `use_update` is set to true' do
57
+ let(:person){ create(:person, :with_parent, favorite_color: nil, last_name: nil, soccer_team: nil) }
58
+ let!(:person_parent) { person.parent }
59
+ it 'inherits values from his parent even if those attributes have a value' do
60
+ person.inherit_attributes false, [], true
61
+ person.reload
62
+ expect(person.favorite_color).to eq person_parent.favorite_color
63
+ expect(person.last_name).to eq person_parent.last_name
64
+ expect(person.soccer_team).to eq person_parent.soccer_team
65
+ end
66
+ end
56
67
  end
57
68
 
58
69
  describe '#inherit_relations' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_inheritable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esteban Arango Medina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-16 00:00:00.000000000 Z
11
+ date: 2015-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler