active_record-acts_as 2.0.9 → 2.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 +4 -4
- data/CHANGELOG.md +25 -19
- data/Guardfile +15 -0
- data/README.md +5 -5
- data/active_record-acts_as.gemspec +4 -3
- data/lib/active_record/acts_as/class_methods.rb +4 -0
- data/lib/active_record/acts_as/instance_methods.rb +3 -3
- data/lib/active_record/acts_as/version.rb +1 -1
- data/spec/acts_as_spec.rb +33 -36
- metadata +21 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72b7784416ad69a0731cce15396045c59b98c4c2
|
4
|
+
data.tar.gz: 7afa85a1598de8f937c6c6c91b7eea2b97862c09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b789d5515ffe491052354386627199337c2ca975513d41755a0519d07158ea9393da5e346c501af60efe23c604dd1ad9f70f0e9cd7507738c0e3846c4a870fb0
|
7
|
+
data.tar.gz: 9c2c0991e5ce87f8b39eb04898fa0e2c8aa9469e29ee388f6b2a9e9b644f6dd91c858007bb45fe3d00727e0f8b492c2496150dff5614132ac0b03ea9a50148e8
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,10 @@ 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
|
+
## [2.0.9] - 2017-03-02
|
8
|
+
### Fixed
|
9
|
+
- Fix handling of query conditions that contain a dot
|
10
|
+
|
7
11
|
## [2.0.8] - 2017-02-17
|
8
12
|
### Fixed
|
9
13
|
- Avoid circular dependency on destroy
|
@@ -49,22 +53,24 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
49
53
|
### Fixed
|
50
54
|
- Fixed `remove_actable` migration helper (https://github.com/hzamani/active_record-acts_as/pull/71, thanks to [nuclearpidgeon](https://github.com/nuclearpidgeon)!)
|
51
55
|
|
52
|
-
[Unreleased]: https://github.com/
|
53
|
-
[2.0.
|
54
|
-
[2.0.
|
55
|
-
[2.0.
|
56
|
-
[2.0.
|
57
|
-
[2.0.
|
58
|
-
[2.0.
|
59
|
-
[2.0.
|
60
|
-
[2.0.
|
61
|
-
[
|
62
|
-
[
|
63
|
-
[1.0.
|
64
|
-
[1.0.
|
65
|
-
[1.0.
|
66
|
-
[1.0.
|
67
|
-
[1.0.
|
68
|
-
[1.0.
|
69
|
-
[1.0.
|
70
|
-
[1.0.
|
56
|
+
[Unreleased]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.9...HEAD
|
57
|
+
[2.0.9]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.8...v2.0.9
|
58
|
+
[2.0.8]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.7...v2.0.8
|
59
|
+
[2.0.7]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.6...v2.0.7
|
60
|
+
[2.0.6]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.5...v2.0.6
|
61
|
+
[2.0.5]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.4...v2.0.5
|
62
|
+
[2.0.4]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.3...v2.0.4
|
63
|
+
[2.0.3]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.2...v2.0.3
|
64
|
+
[2.0.2]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.1...v2.0.2
|
65
|
+
[2.0.1]: https://github.com/krautcomputing/active_record-acts_as/compare/v2.0.0...v2.0.1
|
66
|
+
[2.0.0]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.8...v2.0.0
|
67
|
+
[1.0.8]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.7...v1.0.8
|
68
|
+
[1.0.7]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.6...v1.0.7
|
69
|
+
[1.0.6]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.5...v1.0.6
|
70
|
+
[1.0.5]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.4...v1.0.5
|
71
|
+
[1.0.4]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.3...v1.0.4
|
72
|
+
[1.0.3]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.2...v1.0.3
|
73
|
+
[1.0.2]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.1...v1.0.2
|
74
|
+
[1.0.1]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.0...v1.0.1
|
75
|
+
[1.0.0]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.0.rc...v1.0.0
|
76
|
+
[1.0.0.rc]: https://github.com/krautcomputing/active_record-acts_as/compare/v1.0.0.pre...v1.0.0.rc
|
data/Guardfile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
guard :rspec, cmd: 'bundle exec rspec' do
|
2
|
+
require 'guard/rspec/dsl'
|
3
|
+
|
4
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
5
|
+
|
6
|
+
# RSpec files
|
7
|
+
rspec = dsl.rspec
|
8
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
9
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
10
|
+
watch(rspec.spec_files)
|
11
|
+
|
12
|
+
# Ruby files
|
13
|
+
ruby = dsl.ruby
|
14
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
15
|
+
end
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
[](http://badge.fury.io/rb/active_record-acts_as)
|
2
|
-
[](https://travis-ci.org/krautcomputing/active_record-acts_as)
|
3
|
+
[](https://codeclimate.com/github/krautcomputing/active_record-acts_as)
|
4
|
+
[](https://coveralls.io/r/krautcomputing/active_record-acts_as)
|
5
|
+
[](https://gemnasium.com/krautcomputing/active_record-acts_as)
|
6
6
|
|
7
7
|
# ActiveRecord::ActsAs
|
8
8
|
|
@@ -202,7 +202,7 @@ end
|
|
202
202
|
|
203
203
|
## Contributing
|
204
204
|
|
205
|
-
1. Fork it ( https://github.com/
|
205
|
+
1. Fork it ( https://github.com/krautcomputing/active_record-acts_as/fork )
|
206
206
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
207
207
|
3. Test changes don't break anything (`rspec`)
|
208
208
|
4. Add specs for your new feature
|
@@ -6,11 +6,11 @@ require 'active_record/acts_as/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "active_record-acts_as"
|
8
8
|
spec.version = ActiveRecord::ActsAs::VERSION
|
9
|
-
spec.authors = ["Hassan Zamani"]
|
10
|
-
spec.email = ["hsn.zamani@gmail.com"]
|
9
|
+
spec.authors = ["Hassan Zamani", "Manuel Meurer"]
|
10
|
+
spec.email = ["hsn.zamani@gmail.com", "manuel@krautcomputing.com"]
|
11
11
|
spec.summary = %q{Simulate multi-table inheritance for activerecord models}
|
12
12
|
spec.description = %q{Simulate multi-table inheritance for activerecord models using a plymorphic association}
|
13
|
-
spec.homepage = "http://github.com/
|
13
|
+
spec.homepage = "http://github.com/krautcomputing/active_record-acts_as"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "rspec", "~> 3"
|
26
26
|
spec.add_development_dependency "rake", "~> 10"
|
27
27
|
spec.add_development_dependency "appraisal", "~> 2.1"
|
28
|
+
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
28
29
|
|
29
30
|
spec.add_dependency "activesupport", ">= 4.2"
|
30
31
|
spec.add_dependency "activerecord", ">= 4.2"
|
@@ -10,7 +10,7 @@ module ActiveRecord
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def changed?
|
13
|
-
super || acting_as.changed? || @_acting_as_changed
|
13
|
+
super || acting_as.changed? || (defined?(@_acting_as_changed) ? @_acting_as_changed : false)
|
14
14
|
end
|
15
15
|
|
16
16
|
def acting_as_foreign_key
|
@@ -68,11 +68,11 @@ module ActiveRecord
|
|
68
68
|
private :write_attribute, :write_store_attribute
|
69
69
|
|
70
70
|
def attributes
|
71
|
-
|
71
|
+
acting_as.attributes.except(acting_as_reflection.type, acting_as_reflection.foreign_key).merge(super)
|
72
72
|
end
|
73
73
|
|
74
74
|
def attribute_names
|
75
|
-
|
75
|
+
super | (acting_as.attribute_names - [acting_as_reflection.type, acting_as_reflection.foreign_key])
|
76
76
|
end
|
77
77
|
|
78
78
|
def has_attribute?(attr_name, as_original_class = false)
|
data/spec/acts_as_spec.rb
CHANGED
@@ -306,6 +306,7 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
|
|
306
306
|
p.price = 0.8
|
307
307
|
expect(p).to be_valid
|
308
308
|
end
|
309
|
+
|
309
310
|
it "unless validates_actable is set to false" do
|
310
311
|
p = IsolatedPen.new
|
311
312
|
expect(p).to be_invalid
|
@@ -345,46 +346,42 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
|
|
345
346
|
store.products << pen
|
346
347
|
expect(pen.store).to eq(store)
|
347
348
|
end
|
349
|
+
end
|
348
350
|
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
}
|
357
|
-
|
358
|
-
|
351
|
+
describe "#attributes" do
|
352
|
+
it "returns the attribute names of the supermodel and submodel" do
|
353
|
+
expect(pen.attributes).to eq(
|
354
|
+
"id" => nil,
|
355
|
+
"name" => "pen",
|
356
|
+
"price" => 0.8,
|
357
|
+
"store_id" => nil,
|
358
|
+
"settings" => {},
|
359
|
+
"created_at" => nil,
|
360
|
+
"updated_at" => nil,
|
361
|
+
"color" => "red",
|
362
|
+
"pen_collection_id" => nil
|
363
|
+
)
|
364
|
+
end
|
365
|
+
end
|
359
366
|
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
expect(JSON.parse(pen.to_json)).to eq(JSON.parse('''
|
364
|
-
{
|
365
|
-
"id": '+ pen.id.to_s + ',
|
366
|
-
"name": "pen",
|
367
|
-
"price": 0.8,
|
368
|
-
"store_id": null,
|
369
|
-
"pen_collection_id": null,
|
370
|
-
"settings": {},
|
371
|
-
"color": "red",
|
372
|
-
"created_at": ' + pen.created_at.to_json + ',
|
373
|
-
"updated_at": ' + pen.updated_at.to_json + '
|
374
|
-
}
|
375
|
-
'''))
|
376
|
-
end
|
367
|
+
describe "#attribute_names" do
|
368
|
+
it "returns the attribute names of the supermodel and submodel" do
|
369
|
+
expect(pen.attribute_names).to eq(["id", "color", "pen_collection_id", "name", "price", "store_id", "settings", "created_at", "updated_at"])
|
377
370
|
end
|
371
|
+
end
|
378
372
|
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
373
|
+
describe ".actables" do
|
374
|
+
before(:each) { clear_database }
|
375
|
+
|
376
|
+
it "returns a query for the actable records" do
|
377
|
+
red_pen = Pen.create!(name: 'red pen', price: 0.8, color: 'red')
|
378
|
+
blue_pen = Pen.create!(name: 'blue pen', price: 0.8, color: 'blue')
|
379
|
+
black_pen = Pen.create!(name: 'black pen', price: 0.9, color: 'black')
|
380
|
+
|
381
|
+
actables = Pen.where(price: 0.8).actables
|
382
|
+
|
383
|
+
expect(actables).to be_kind_of(ActiveRecord::Relation)
|
384
|
+
expect(actables.to_a).to eq([red_pen.acting_as, blue_pen.acting_as])
|
388
385
|
end
|
389
386
|
end
|
390
387
|
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
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
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hassan Zamani
|
8
|
+
- Manuel Meurer
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
12
|
+
date: 2017-03-17 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: sqlite3
|
@@ -80,6 +81,20 @@ dependencies:
|
|
80
81
|
- - "~>"
|
81
82
|
- !ruby/object:Gem::Version
|
82
83
|
version: '2.1'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: guard-rspec
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '4.7'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '4.7'
|
83
98
|
- !ruby/object:Gem::Dependency
|
84
99
|
name: activesupport
|
85
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,6 +127,7 @@ description: Simulate multi-table inheritance for activerecord models using a pl
|
|
112
127
|
association
|
113
128
|
email:
|
114
129
|
- hsn.zamani@gmail.com
|
130
|
+
- manuel@krautcomputing.com
|
115
131
|
executables: []
|
116
132
|
extensions: []
|
117
133
|
extra_rdoc_files: []
|
@@ -122,6 +138,7 @@ files:
|
|
122
138
|
- Appraisals
|
123
139
|
- CHANGELOG.md
|
124
140
|
- Gemfile
|
141
|
+
- Guardfile
|
125
142
|
- LICENSE.txt
|
126
143
|
- README.md
|
127
144
|
- Rakefile
|
@@ -144,7 +161,7 @@ files:
|
|
144
161
|
- spec/models.rb
|
145
162
|
- spec/rspec_matchers_spec.rb
|
146
163
|
- spec/spec_helper.rb
|
147
|
-
homepage: http://github.com/
|
164
|
+
homepage: http://github.com/krautcomputing/active_record-acts_as
|
148
165
|
licenses:
|
149
166
|
- MIT
|
150
167
|
metadata: {}
|
@@ -164,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
181
|
version: '0'
|
165
182
|
requirements: []
|
166
183
|
rubyforge_project:
|
167
|
-
rubygems_version: 2.6.
|
184
|
+
rubygems_version: 2.6.8
|
168
185
|
signing_key:
|
169
186
|
specification_version: 4
|
170
187
|
summary: Simulate multi-table inheritance for activerecord models
|
@@ -177,4 +194,3 @@ test_files:
|
|
177
194
|
- spec/models.rb
|
178
195
|
- spec/rspec_matchers_spec.rb
|
179
196
|
- spec/spec_helper.rb
|
180
|
-
has_rdoc:
|