active_record-acts_as 2.0.4 → 2.0.5

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: 9cc915fa77c939869175617ca452707352f1c958
4
- data.tar.gz: 49e729130f7d047cd550791e47d91f8aae02233e
3
+ metadata.gz: 5f5963e720c4d133aec9bbcadb5d8034e805c5da
4
+ data.tar.gz: b72a5773b65e24a08baa22ef43ff420f25d24d29
5
5
  SHA512:
6
- metadata.gz: a33e98e3a6fe6df92f4e3a89b597ae503e3091deb9b65c73596d38b14cb29bcf12d0d900e9f0e2779b36e7e902f3b5a767db18b550c6b290e0bee48aee7fd9e7
7
- data.tar.gz: 4cbe6d4237c1ca1c198bd95a0176ee3cbbe561b773073f3a9168fe739da35a006cdb316467c0a2fc8b3856fcb1a9e4ea498b86128cd16e3b11b7dad44a0da619
6
+ metadata.gz: 6308fb4da307ca8d479ed40e6f6e1245dec31cbdc031ed28f6ebb4832dc1d282f28622235d074b296c9783ee1eb7c82e1aab6a93cc5fbf03f96918e824927a29
7
+ data.tar.gz: cb452a38e28515964324e1540cf562631cdb0c3e403fdb9f512682a36d5076a9ad0f31d4b989fffc2fe65da828fe46266a91ed3cd3991985088821bca482f016
data/CHANGELOG.md CHANGED
@@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
- ## [Unreleased]
7
+ ## [2.0.4] - 2016-12-07
8
8
  ### Fixed
9
9
  - Touch associated objects if supermodel is updated
10
10
 
@@ -32,7 +32,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
32
32
  ### Fixed
33
33
  - Fixed `remove_actable` migration helper (https://github.com/hzamani/active_record-acts_as/pull/71, thanks to [nuclearpidgeon](https://github.com/nuclearpidgeon)!)
34
34
 
35
- [Unreleased]: https://github.com/hzamani/active_record-acts_as/compare/v2.0.3...HEAD
35
+ [Unreleased]: https://github.com/hzamani/active_record-acts_as/compare/v2.0.4...HEAD
36
+ [2.0.4]: https://github.com/hzamani/active_record-acts_as/compare/v2.0.3...v2.0.4
36
37
  [2.0.3]: https://github.com/hzamani/active_record-acts_as/compare/v2.0.2...v2.0.3
37
38
  [2.0.2]: https://github.com/hzamani/active_record-acts_as/compare/v2.0.1...v2.0.2
38
39
  [2.0.1]: https://github.com/hzamani/active_record-acts_as/compare/v2.0.0...v2.0.1
data/README.md CHANGED
@@ -167,7 +167,7 @@ acts_as :person, -> { includes(:friends) }
167
167
  ```
168
168
 
169
169
  `actable` support all `belongs_to` options, where defaults are these:
170
- `polymorphic: true, dependent: :delete, autosave: true`
170
+ `polymorphic: true, dependent: :destroy, autosave: true`
171
171
 
172
172
  Make sure you know what you are doing when overwriting `polymorphic` option.
173
173
 
@@ -23,11 +23,6 @@ module ActiveRecord
23
23
  !acting_as.id.nil? && !acting_as_foreign_key.nil?
24
24
  end
25
25
 
26
- def touch_actable
27
- return unless changed?
28
- acting_as.touch
29
- end
30
-
31
26
  def actable_must_be_valid
32
27
  if validates_actable
33
28
  unless acting_as.valid?
@@ -97,7 +92,7 @@ module ActiveRecord
97
92
  end
98
93
 
99
94
  def touch
100
- acting_as.touch
95
+ acting_as.touch if acting_as.persisted?
101
96
  end
102
97
 
103
98
  def respond_to?(name, include_private = false, as_original_class = false)
@@ -24,7 +24,10 @@ module ActiveRecord
24
24
  end
25
25
  }
26
26
  validate :actable_must_be_valid
27
- after_update :touch_actable unless touch == false
27
+
28
+ unless touch == false
29
+ after_update :touch, if: :changed?
30
+ end
28
31
 
29
32
  before_save do
30
33
  @_acting_as_changed = acting_as.changed?
@@ -70,7 +73,7 @@ module ActiveRecord
70
73
  def actable(options = {})
71
74
  name = options.delete(:as) || :actable
72
75
 
73
- reflections = belongs_to name, {polymorphic: true, dependent: :delete, autosave: true}.merge(options)
76
+ reflections = belongs_to(name, options.reverse_merge(polymorphic: true, dependent: :destroy, autosave: true))
74
77
 
75
78
  cattr_reader(:actable_reflection) { reflections.stringify_keys[name.to_s] }
76
79
 
@@ -1,6 +1,6 @@
1
1
  module ActiveRecord
2
2
  module ActsAs
3
- VERSION = "2.0.4"
3
+ VERSION = "2.0.5"
4
4
  end
5
5
  end
6
6
 
data/spec/acts_as_spec.rb CHANGED
@@ -152,7 +152,7 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
152
152
 
153
153
  describe "._reflections" do
154
154
  it "merges the reflections on both superclass and subclass" do
155
- expect(Pen._reflections.length).to eq(Product._reflections.length + 2)
155
+ expect(Pen._reflections.length).to eq(Product._reflections.length + 3)
156
156
  end
157
157
  end
158
158
 
@@ -198,6 +198,7 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
198
198
  "name": "pen",
199
199
  "price": 0.8,
200
200
  "store_id": null,
201
+ "pen_collection_id": null,
201
202
  "settings": {"global_option":"globalvalue", "option1":"value1"},
202
203
  "color": "red",
203
204
  "created_at": ' + pen.created_at.to_json + ',
@@ -214,6 +215,20 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
214
215
  expect(pen.color).to eq('red')
215
216
  end
216
217
 
218
+ context "deleting" do
219
+ it "destroys associated records defined with `has_many dependent: :destroy` on supermodel" do
220
+ pen.save!
221
+ pen.buyers.create!
222
+ expect { pen.destroy }.to change { Buyer.count }.by(-1)
223
+ end
224
+
225
+ it "destroys associated records defined with `has_many dependent: :destroy` on submodel" do
226
+ pen.save!
227
+ pen.pen_caps.create!
228
+ expect { pen.destroy }.to change { PenCap.count }.by(-1)
229
+ end
230
+ end
231
+
217
232
  context "touching" do
218
233
  it "touches supermodel on save" do
219
234
  pen.save
@@ -316,7 +331,13 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
316
331
 
317
332
  context "includes supermodel attributes in .to_json response" do
318
333
  it "unless the submodel instance association doesn't exist" do
319
- expect(JSON.parse(isolated_pen.to_json)).to eq(JSON.parse('{"id":null,"color":"red"}'))
334
+ expect(JSON.parse(isolated_pen.to_json)).to eq(JSON.parse('''
335
+ {
336
+ "id": null,
337
+ "color": "red",
338
+ "pen_collection_id": null
339
+ }
340
+ '''))
320
341
  end
321
342
 
322
343
  it "if the submodel instance association exists" do
@@ -328,6 +349,7 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
328
349
  "name": "pen",
329
350
  "price": 0.8,
330
351
  "store_id": null,
352
+ "pen_collection_id": null,
331
353
  "settings": {},
332
354
  "color": "red",
333
355
  "created_at": ' + pen.created_at.to_json + ',
data/spec/models.rb CHANGED
@@ -4,7 +4,7 @@ require 'active_record/acts_as'
4
4
  class Product < ActiveRecord::Base
5
5
  actable
6
6
  belongs_to :store, touch: true
7
- has_many :buyers
7
+ has_many :buyers, dependent: :destroy
8
8
  validates_presence_of :name, :price
9
9
  store :settings, accessors: [:global_option]
10
10
 
@@ -25,7 +25,7 @@ class Pen < ActiveRecord::Base
25
25
  acts_as :product
26
26
  store_accessor :settings, :option1
27
27
 
28
- has_many :pen_caps
28
+ has_many :pen_caps, dependent: :destroy
29
29
  belongs_to :pen_collection, touch: true
30
30
 
31
31
  validates_presence_of :color
@@ -100,7 +100,7 @@ def initialize_schema
100
100
  end
101
101
 
102
102
  create_table :pen_caps do |t|
103
- t.integer :buyer_id
103
+ t.integer :pen_id
104
104
  end
105
105
 
106
106
  create_table :inventory_pen_lids do |t|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-acts_as
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hassan Zamani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-07 00:00:00.000000000 Z
11
+ date: 2016-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3