active_record-acts_as 3.0.2 → 3.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/active_record-acts_as.gemspec +3 -3
- data/lib/active_record/acts_as/relation.rb +6 -2
- data/lib/active_record/acts_as/version.rb +1 -1
- data/spec/acts_as_spec.rb +22 -0
- data/spec/models.rb +9 -0
- metadata +15 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbfc7ea492327e566ab788c73aeb7d294a9d9b4f66049464c9bdcdd5e293bd2a
|
4
|
+
data.tar.gz: f9142f0468e292d87c4d0637970ca49823cc44664eb59fe09e975d3fe887fc04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1ac325e5b476330009606cad7248eb51c62ef8e5bf55ea1ac3ed099e55392716a7aceed1b0f6078a3031f4ab29ddcd86fd634c490289c41ff293381609fc68f
|
7
|
+
data.tar.gz: 3aaaf59d5b1b229bcedefb4135ba16df442016680096071c1ce6de076293158e803cc670ecda0f67ab991a4ee4a9112db44e63f757004cc759f17102deead977
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["Hassan Zamani", "Manuel Meurer"]
|
10
10
|
spec.email = ["hsn.zamani@gmail.com", "manuel@krautcomputing.com"]
|
11
11
|
spec.summary = %q{Simulate multi-table inheritance for activerecord models}
|
12
|
-
spec.description = %q{Simulate multi-table inheritance for activerecord models using a
|
12
|
+
spec.description = %q{Simulate multi-table inheritance for activerecord models using a polymorphic association}
|
13
13
|
spec.homepage = "http://github.com/krautcomputing/active_record-acts_as"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -27,6 +27,6 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency "appraisal", "~> 2.1"
|
28
28
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
29
29
|
|
30
|
-
spec.add_dependency "activesupport", ">= 4.2"
|
31
|
-
spec.add_dependency "activerecord", ">= 4.2"
|
30
|
+
spec.add_dependency "activesupport", ">= 4.2", "< 5.2.2.rc1"
|
31
|
+
spec.add_dependency "activerecord", ">= 4.2", "< 5.2.2.rc1"
|
32
32
|
end
|
@@ -76,10 +76,14 @@ module ActiveRecord
|
|
76
76
|
super || acting_as?(klass)
|
77
77
|
end
|
78
78
|
|
79
|
-
def actable(
|
79
|
+
def actable(scope = nil, **options)
|
80
80
|
name = options.delete(:as) || :actable
|
81
81
|
|
82
|
-
reflections = belongs_to(name, options.reverse_merge(validate: false,
|
82
|
+
reflections = belongs_to(name, scope, options.reverse_merge(validate: false,
|
83
|
+
polymorphic: true,
|
84
|
+
dependent: :destroy,
|
85
|
+
autosave: true,
|
86
|
+
inverse_of: to_s.underscore))
|
83
87
|
|
84
88
|
cattr_reader(:actable_reflection) { reflections.stringify_keys[name.to_s] }
|
85
89
|
|
data/spec/acts_as_spec.rb
CHANGED
@@ -411,6 +411,28 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
|
|
411
411
|
end
|
412
412
|
end
|
413
413
|
|
414
|
+
describe '.actable' do
|
415
|
+
class User < ActiveRecord::Base
|
416
|
+
actable -> { unscope(:where) }
|
417
|
+
end
|
418
|
+
|
419
|
+
class Customer < ActiveRecord::Base
|
420
|
+
default_scope { where('identifier > 1') }
|
421
|
+
acts_as :user
|
422
|
+
|
423
|
+
validates_presence_of :identifier
|
424
|
+
end
|
425
|
+
|
426
|
+
context 'with scope' do
|
427
|
+
it 'unscopes default scope' do
|
428
|
+
customer = Customer.create!(identifier: 1)
|
429
|
+
user = customer.user.reload
|
430
|
+
expect(user).to be_a User
|
431
|
+
expect(user.actable).to eq(customer)
|
432
|
+
end
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
414
436
|
context 'class methods' do
|
415
437
|
before(:each) { clear_database }
|
416
438
|
|
data/spec/models.rb
CHANGED
@@ -91,6 +91,15 @@ end
|
|
91
91
|
|
92
92
|
def initialize_schema
|
93
93
|
initialize_database do
|
94
|
+
create_table :users do |t|
|
95
|
+
t.timestamps null: true
|
96
|
+
t.actable
|
97
|
+
end
|
98
|
+
|
99
|
+
create_table :customers do |t|
|
100
|
+
t.integer :identifier
|
101
|
+
end
|
102
|
+
|
94
103
|
create_table :pen_collections do |t|
|
95
104
|
t.timestamps null: true
|
96
105
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record-acts_as
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hassan Zamani
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sqlite3
|
@@ -102,6 +102,9 @@ dependencies:
|
|
102
102
|
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '4.2'
|
105
|
+
- - "<"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: 5.2.2.rc1
|
105
108
|
type: :runtime
|
106
109
|
prerelease: false
|
107
110
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -109,6 +112,9 @@ dependencies:
|
|
109
112
|
- - ">="
|
110
113
|
- !ruby/object:Gem::Version
|
111
114
|
version: '4.2'
|
115
|
+
- - "<"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 5.2.2.rc1
|
112
118
|
- !ruby/object:Gem::Dependency
|
113
119
|
name: activerecord
|
114
120
|
requirement: !ruby/object:Gem::Requirement
|
@@ -116,6 +122,9 @@ dependencies:
|
|
116
122
|
- - ">="
|
117
123
|
- !ruby/object:Gem::Version
|
118
124
|
version: '4.2'
|
125
|
+
- - "<"
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: 5.2.2.rc1
|
119
128
|
type: :runtime
|
120
129
|
prerelease: false
|
121
130
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -123,7 +132,10 @@ dependencies:
|
|
123
132
|
- - ">="
|
124
133
|
- !ruby/object:Gem::Version
|
125
134
|
version: '4.2'
|
126
|
-
|
135
|
+
- - "<"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: 5.2.2.rc1
|
138
|
+
description: Simulate multi-table inheritance for activerecord models using a polymorphic
|
127
139
|
association
|
128
140
|
email:
|
129
141
|
- hsn.zamani@gmail.com
|