polymorphic_integer_type 2.2.1 → 2.3.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
- SHA256:
3
- metadata.gz: a0ad89af7c6b5e5602d7a55d61d3ba112b5db2afbeb5e43226972eaaff50761b
4
- data.tar.gz: 5838309b72defdf55b950c155c3d5d87ebe7a663aaad9dc5e8453bb246dd28f7
2
+ SHA1:
3
+ metadata.gz: 6c2cf440c0f3c18a7617ca1afb6ef64df29f5318
4
+ data.tar.gz: c69f7e53591f29f1ca30f34824fcd82cf0d8347f
5
5
  SHA512:
6
- metadata.gz: 07a499153097713ec3f90b5a42b796205ea773a04a1b77aedc4e9d8e1f0ac8f2d84238a2a6350e3cce7fba1b8f5fcf59e3b28642e39a0f55c532cf5d94f22a18
7
- data.tar.gz: bf81c398c18cdc8d2f7edaf81f8a669237b4aff73152c0bd180bb264bd4b5216bc6cc358a7fdd48aa8631cc1f31758ba9ddacf23e49e16c1b1cf2a1553199c62
6
+ metadata.gz: 6d53e634ae33cd8ea9be786f8e5d8416154773a5795bff1a9d9b943961336755d416fef200cea78655d67d74253b52d95d2c18d1949cbd71f98550bc40050e12
7
+ data.tar.gz: 3a35e05e8c28d847255c7f16168bda71f176f247f6260e2d54879e2a295764fd8f5a93de7dbbb146505040477a7e0e162755d6f8983e57de0ded30ba796d8158
data/Rakefile CHANGED
@@ -2,6 +2,17 @@ require "bundler/gem_tasks"
2
2
  require "yaml"
3
3
  require "active_record"
4
4
 
5
+ namespace :test do
6
+ task :all do
7
+ Dir.glob("./gemfiles/Gemfile*").each do |gemfile|
8
+ next if gemfile.end_with?(".lock")
9
+ puts "Running specs for #{Pathname.new(gemfile).basename}"
10
+ system("BUNDLE_GEMFILE=#{gemfile} bundle install > /dev/null && BUNDLE_GEMFILE=#{gemfile} bundle exec rspec")
11
+ puts ""
12
+ end
13
+ end
14
+ end
15
+
5
16
  namespace :db do
6
17
  database_config = YAML.load(File.open("./spec/support/database.yml"))
7
18
  admin_database_config = database_config.merge(database: "mysql")
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gemspec path: ".."
6
+
7
+ gem "activerecord", github: "rails/rails", branch: "4-2-stable"
8
+ gem "sqlite3", "~> 1.3.6"
@@ -0,0 +1,68 @@
1
+ GIT
2
+ remote: git://github.com/rails/rails.git
3
+ revision: e9d6b85f3e834ceea2aeabe4cbaa96a7c73eb896
4
+ branch: 4-2-stable
5
+ specs:
6
+ activemodel (4.2.11.1)
7
+ activesupport (= 4.2.11.1)
8
+ builder (~> 3.1)
9
+ activerecord (4.2.11.1)
10
+ activemodel (= 4.2.11.1)
11
+ activesupport (= 4.2.11.1)
12
+ arel (~> 6.0)
13
+ activesupport (4.2.11.1)
14
+ i18n (~> 0.7)
15
+ minitest (~> 5.1)
16
+ thread_safe (~> 0.3, >= 0.3.4)
17
+ tzinfo (~> 1.1)
18
+
19
+ PATH
20
+ remote: ..
21
+ specs:
22
+ polymorphic_integer_type (2.2.4)
23
+ activerecord
24
+
25
+ GEM
26
+ remote: https://rubygems.org/
27
+ specs:
28
+ arel (6.0.4)
29
+ builder (3.2.4)
30
+ byebug (11.0.1)
31
+ concurrent-ruby (1.1.5)
32
+ diff-lcs (1.3)
33
+ i18n (0.9.5)
34
+ concurrent-ruby (~> 1.0)
35
+ minitest (5.13.0)
36
+ rake (13.0.1)
37
+ rspec (3.9.0)
38
+ rspec-core (~> 3.9.0)
39
+ rspec-expectations (~> 3.9.0)
40
+ rspec-mocks (~> 3.9.0)
41
+ rspec-core (3.9.0)
42
+ rspec-support (~> 3.9.0)
43
+ rspec-expectations (3.9.0)
44
+ diff-lcs (>= 1.2.0, < 2.0)
45
+ rspec-support (~> 3.9.0)
46
+ rspec-mocks (3.9.0)
47
+ diff-lcs (>= 1.2.0, < 2.0)
48
+ rspec-support (~> 3.9.0)
49
+ rspec-support (3.9.0)
50
+ sqlite3 (1.3.13)
51
+ thread_safe (0.3.6)
52
+ tzinfo (1.2.5)
53
+ thread_safe (~> 0.1)
54
+
55
+ PLATFORMS
56
+ ruby
57
+
58
+ DEPENDENCIES
59
+ activerecord!
60
+ bundler
61
+ byebug
62
+ polymorphic_integer_type!
63
+ rake
64
+ rspec
65
+ sqlite3 (~> 1.3.6)
66
+
67
+ BUNDLED WITH
68
+ 1.16.1
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gemspec path: ".."
6
+
7
+ gem "activerecord", github: "rails/rails", branch: "5-0-stable"
8
+ gem "sqlite3", "~> 1.3.6"
@@ -0,0 +1,66 @@
1
+ GIT
2
+ remote: git://github.com/rails/rails.git
3
+ revision: ac6aa32f7cf66264ba87eabed7c042bb60bcf3a2
4
+ branch: 5-0-stable
5
+ specs:
6
+ activemodel (5.0.7.2)
7
+ activesupport (= 5.0.7.2)
8
+ activerecord (5.0.7.2)
9
+ activemodel (= 5.0.7.2)
10
+ activesupport (= 5.0.7.2)
11
+ arel (~> 7.0)
12
+ activesupport (5.0.7.2)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 0.7, < 2)
15
+ minitest (~> 5.1)
16
+ tzinfo (~> 1.1)
17
+
18
+ PATH
19
+ remote: ..
20
+ specs:
21
+ polymorphic_integer_type (2.2.4)
22
+ activerecord
23
+
24
+ GEM
25
+ remote: https://rubygems.org/
26
+ specs:
27
+ arel (7.1.4)
28
+ byebug (11.0.1)
29
+ concurrent-ruby (1.1.5)
30
+ diff-lcs (1.3)
31
+ i18n (1.7.0)
32
+ concurrent-ruby (~> 1.0)
33
+ minitest (5.13.0)
34
+ rake (13.0.1)
35
+ rspec (3.9.0)
36
+ rspec-core (~> 3.9.0)
37
+ rspec-expectations (~> 3.9.0)
38
+ rspec-mocks (~> 3.9.0)
39
+ rspec-core (3.9.0)
40
+ rspec-support (~> 3.9.0)
41
+ rspec-expectations (3.9.0)
42
+ diff-lcs (>= 1.2.0, < 2.0)
43
+ rspec-support (~> 3.9.0)
44
+ rspec-mocks (3.9.0)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.9.0)
47
+ rspec-support (3.9.0)
48
+ sqlite3 (1.3.13)
49
+ thread_safe (0.3.6)
50
+ tzinfo (1.2.5)
51
+ thread_safe (~> 0.1)
52
+
53
+ PLATFORMS
54
+ ruby
55
+
56
+ DEPENDENCIES
57
+ activerecord!
58
+ bundler
59
+ byebug
60
+ polymorphic_integer_type!
61
+ rake
62
+ rspec
63
+ sqlite3 (~> 1.3.6)
64
+
65
+ BUNDLED WITH
66
+ 1.16.1
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gemspec path: ".."
6
+
7
+ gem "activerecord", github: "rails/rails", branch: "5-1-stable"
@@ -0,0 +1,66 @@
1
+ GIT
2
+ remote: git://github.com/rails/rails.git
3
+ revision: 663206d20aec374a28a24bb43bc7b1233042ed9b
4
+ branch: 5-1-stable
5
+ specs:
6
+ activemodel (5.1.7)
7
+ activesupport (= 5.1.7)
8
+ activerecord (5.1.7)
9
+ activemodel (= 5.1.7)
10
+ activesupport (= 5.1.7)
11
+ arel (~> 8.0)
12
+ activesupport (5.1.7)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 0.7, < 2)
15
+ minitest (~> 5.1)
16
+ tzinfo (~> 1.1)
17
+
18
+ PATH
19
+ remote: ..
20
+ specs:
21
+ polymorphic_integer_type (2.2.4)
22
+ activerecord
23
+
24
+ GEM
25
+ remote: https://rubygems.org/
26
+ specs:
27
+ arel (8.0.0)
28
+ byebug (11.0.1)
29
+ concurrent-ruby (1.1.5)
30
+ diff-lcs (1.3)
31
+ i18n (1.7.0)
32
+ concurrent-ruby (~> 1.0)
33
+ minitest (5.13.0)
34
+ rake (13.0.1)
35
+ rspec (3.9.0)
36
+ rspec-core (~> 3.9.0)
37
+ rspec-expectations (~> 3.9.0)
38
+ rspec-mocks (~> 3.9.0)
39
+ rspec-core (3.9.0)
40
+ rspec-support (~> 3.9.0)
41
+ rspec-expectations (3.9.0)
42
+ diff-lcs (>= 1.2.0, < 2.0)
43
+ rspec-support (~> 3.9.0)
44
+ rspec-mocks (3.9.0)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.9.0)
47
+ rspec-support (3.9.0)
48
+ sqlite3 (1.4.2)
49
+ thread_safe (0.3.6)
50
+ tzinfo (1.2.5)
51
+ thread_safe (~> 0.1)
52
+
53
+ PLATFORMS
54
+ ruby
55
+
56
+ DEPENDENCIES
57
+ activerecord!
58
+ bundler
59
+ byebug
60
+ polymorphic_integer_type!
61
+ rake
62
+ rspec
63
+ sqlite3
64
+
65
+ BUNDLED WITH
66
+ 1.16.1
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gemspec path: ".."
6
+
7
+ gem "activerecord", github: "rails/rails", branch: "5-2-stable"
@@ -0,0 +1,66 @@
1
+ GIT
2
+ remote: git://github.com/rails/rails.git
3
+ revision: 892eab777c418135ce0646e91bc9ebb08a29ab9b
4
+ branch: 5-2-stable
5
+ specs:
6
+ activemodel (5.2.4.1)
7
+ activesupport (= 5.2.4.1)
8
+ activerecord (5.2.4.1)
9
+ activemodel (= 5.2.4.1)
10
+ activesupport (= 5.2.4.1)
11
+ arel (>= 9.0)
12
+ activesupport (5.2.4.1)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 0.7, < 2)
15
+ minitest (~> 5.1)
16
+ tzinfo (~> 1.1)
17
+
18
+ PATH
19
+ remote: ..
20
+ specs:
21
+ polymorphic_integer_type (2.2.4)
22
+ activerecord
23
+
24
+ GEM
25
+ remote: https://rubygems.org/
26
+ specs:
27
+ arel (9.0.0)
28
+ byebug (11.0.1)
29
+ concurrent-ruby (1.1.5)
30
+ diff-lcs (1.3)
31
+ i18n (1.7.0)
32
+ concurrent-ruby (~> 1.0)
33
+ minitest (5.13.0)
34
+ rake (13.0.1)
35
+ rspec (3.9.0)
36
+ rspec-core (~> 3.9.0)
37
+ rspec-expectations (~> 3.9.0)
38
+ rspec-mocks (~> 3.9.0)
39
+ rspec-core (3.9.0)
40
+ rspec-support (~> 3.9.0)
41
+ rspec-expectations (3.9.0)
42
+ diff-lcs (>= 1.2.0, < 2.0)
43
+ rspec-support (~> 3.9.0)
44
+ rspec-mocks (3.9.0)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.9.0)
47
+ rspec-support (3.9.0)
48
+ sqlite3 (1.4.2)
49
+ thread_safe (0.3.6)
50
+ tzinfo (1.2.5)
51
+ thread_safe (~> 0.1)
52
+
53
+ PLATFORMS
54
+ ruby
55
+
56
+ DEPENDENCIES
57
+ activerecord!
58
+ bundler
59
+ byebug
60
+ polymorphic_integer_type!
61
+ rake
62
+ rspec
63
+ sqlite3
64
+
65
+ BUNDLED WITH
66
+ 1.16.1
@@ -1,10 +1,21 @@
1
+ ACTIVE_RECORD_VERSION = Gem::Version.new(ActiveRecord::VERSION::STRING)
2
+
1
3
  require "polymorphic_integer_type/version"
2
4
  require "polymorphic_integer_type/extensions"
3
5
  require "polymorphic_integer_type/mapping"
4
- if Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new("5")
5
- require "polymorphic_integer_type/predicate_builder_extension"
6
+
7
+ if ACTIVE_RECORD_VERSION < Gem::Version.new("5")
8
+ require "polymorphic_integer_type/activerecord_4/predicate_builder_extension"
6
9
  else
7
- require "polymorphic_integer_type/polymorphic_array_value_extension"
10
+ require "polymorphic_integer_type/activerecord_5_0_0/polymorphic_array_value_extension"
11
+ end
12
+
13
+ if ACTIVE_RECORD_VERSION >= Gem::Version.new("5.0") && ACTIVE_RECORD_VERSION < Gem::Version.new("5.2.0")
14
+ require "polymorphic_integer_type/activerecord_5_0_0/association_query_handler_extension"
15
+ end
16
+
17
+ if ACTIVE_RECORD_VERSION < Gem::Version.new("5.2.0")
18
+ require "polymorphic_integer_type/activerecord_4/belongs_to_polymorphic_association_extension"
8
19
  end
9
20
 
10
21
  module PolymorphicIntegerType; end
@@ -0,0 +1,10 @@
1
+ module ActiveRecord
2
+ module Associations
3
+ class BelongsToPolymorphicAssociation < BelongsToAssociation
4
+ private def replace_keys(record)
5
+ super
6
+ owner[reflection.foreign_type] = record.class.base_class
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,38 @@
1
+ module PolymorphicIntegerType
2
+ module AssociationQueryHandlerExtension
3
+ def call(attribute, value)
4
+ queries = {}
5
+ table = value.associated_table
6
+
7
+ if value.base_class
8
+ queries[table.association_foreign_type.to_s] = polymorphic_value_for(value)
9
+ end
10
+
11
+ queries[table.association_foreign_key.to_s] = value.ids
12
+ predicate_builder.build_from_hash(queries)
13
+ end
14
+
15
+ protected
16
+
17
+ def polymorphic_value_for(query_value)
18
+ table = query_value.associated_table
19
+ association = table.send(:association)
20
+ klass = association.active_record
21
+ name = association.name
22
+
23
+ if klass.respond_to?("#{name}_type_mapping")
24
+ type_mapping = klass.send("#{name}_type_mapping")
25
+
26
+ type_mapping.key(query_value.value.class.sti_name) ||
27
+ type_mapping.key(query_value.base_class.to_s) ||
28
+ type_mapping.key(query_value.base_class.sti_name)
29
+ else
30
+ query_value.base_class.name
31
+ end
32
+ end
33
+
34
+
35
+ end
36
+ end
37
+
38
+ ActiveRecord::PredicateBuilder::AssociationQueryHandler.prepend(PolymorphicIntegerType::AssociationQueryHandlerExtension)
@@ -24,23 +24,34 @@ module PolymorphicIntegerType
24
24
  mapping
25
25
  end
26
26
 
27
- define_method foreign_type do
28
- t = super()
29
- mapping[t]
30
- end
27
+ foreign_type_extension = Module.new do
28
+ define_method foreign_type do
29
+ t = super()
30
+ self.class.send("#{foreign_type}_mapping")[t]
31
+ end
31
32
 
32
- define_method "#{foreign_type}=" do |klass|
33
- enum = mapping.key(klass.to_s)
34
- enum ||= mapping.key(klass.base_class.to_s) if klass.kind_of?(Class) && klass <= ActiveRecord::Base
35
- enum ||= klass if klass != NilClass
36
- super(enum)
37
- end
33
+ define_method "#{foreign_type}=" do |klass|
34
+ mapping = self.class.send("#{foreign_type}_mapping")
35
+ enum = mapping.key(klass.to_s)
36
+ if klass.kind_of?(Class) && klass <= ActiveRecord::Base
37
+ enum ||= mapping.key(klass.polymorphic_name) if klass.respond_to?(:polymorphic_name)
38
+ enum ||= mapping.key(klass.sti_name)
39
+ enum ||= mapping.key(klass.base_class.to_s)
40
+ enum ||= mapping.key(klass.base_class.sti_name)
41
+ end
42
+ enum ||= klass if klass != NilClass
43
+ super(enum)
44
+ end
38
45
 
39
- define_method "#{name}=" do |record|
40
- super(record)
41
- send("#{foreign_type}=", record.class)
46
+ define_method "#{name}=" do |record|
47
+ super(record)
48
+ send("#{foreign_type}=", record.class)
49
+ association(name).loaded!
50
+ end
42
51
  end
43
52
 
53
+ include(foreign_type_extension)
54
+
44
55
  validate do
45
56
  t = send(foreign_type)
46
57
  unless t.nil? || mapping.values.include?(t)
@@ -60,14 +71,15 @@ module PolymorphicIntegerType
60
71
  if options[:as] && (polymorphic_type_mapping || integer_type)
61
72
  poly_type = options.delete(:as)
62
73
  polymorphic_type_mapping ||= PolymorphicIntegerType::Mapping[poly_type]
63
- if polymorphic_type_mapping == nil
74
+ if polymorphic_type_mapping.nil?
64
75
  raise "Polymorphic type mapping missing for #{poly_type.inspect}"
65
76
  end
66
77
 
67
- klass_mapping = (polymorphic_type_mapping || {}).key(sti_name)
78
+ klass_mapping = polymorphic_type_mapping.key(polymorphic_name) if respond_to?(:polymorphic_name)
79
+ klass_mapping ||= polymorphic_type_mapping.key(sti_name)
68
80
 
69
- if klass_mapping == nil
70
- raise "Class not found for #{sti_name.inspect} in polymorphic type mapping: #{polymorphic_type_mapping}"
81
+ if klass_mapping.nil?
82
+ raise "Class not found for #{inspect} in polymorphic type mapping: #{polymorphic_type_mapping}"
71
83
  end
72
84
 
73
85
  options[:foreign_key] ||= "#{poly_type}_id"
@@ -86,7 +98,7 @@ module PolymorphicIntegerType
86
98
  def retrieve_polymorphic_type_mapping(polymorphic_type:, class_name:)
87
99
  return if polymorphic_type.nil?
88
100
 
89
- belongs_to_class = class_name.safe_constantize
101
+ belongs_to_class = compute_type(class_name)
90
102
  method_name = "#{polymorphic_type}_type_mapping"
91
103
 
92
104
  if belongs_to_class && belongs_to_class.respond_to?(method_name)
@@ -1,3 +1,3 @@
1
1
  module PolymorphicIntegerType
2
- VERSION = "2.2.1"
2
+ VERSION = "2.3.0"
3
3
  end
@@ -24,12 +24,52 @@ describe PolymorphicIntegerType do
24
24
  end
25
25
  end
26
26
 
27
+ context "when the source is a class that modifies the sti_name or polymorphic_name" do
28
+ context "and we leverage the polymorphic_name" do
29
+ before do
30
+ allow(PolymorphicIntegerType).to receive(:use_polymorphic_name).and_return(true)
31
+ end
32
+
33
+ it "properly sets the source_type to the modified class name" do
34
+ link = Link.new(source: Namespaced::Animal.new)
35
+ expect(link.source_type).to eql "Animal"
36
+ end
37
+
38
+ it "can read dirty attributes from an associated object" do
39
+ animal = Namespaced::Animal.create!(name: "Oldie")
40
+ animal.name = "Newton"
41
+ link = Link.create!(source: animal)
42
+
43
+ expect(link.source.name).to eq("Newton")
44
+ end
45
+ end
46
+
47
+ it "properly sets the source_type to the modified class name" do
48
+ link = Link.new(source: Namespaced::Animal.new)
49
+ expect(link.source_type).to eql "Animal"
50
+ end
51
+
52
+ it "can read dirty attributes from an associated object" do
53
+ animal = Namespaced::Animal.create!(name: "Oldie")
54
+ animal.name = "Newton"
55
+ link = Link.create!(source: animal)
56
+
57
+ expect(link.source.name).to eq("Newton")
58
+ end
59
+ end
60
+
27
61
  context "when querying the associations" do
28
62
  let(:source) { cat }
29
63
  let(:target) { nil }
64
+
30
65
  it "properly finds the object with a where" do
31
66
  expect(Link.where(source: source, id: link.id).first).to eql link
32
67
  end
68
+
69
+ it "properly finds the object when passing an array of sources" do
70
+ expect(Link.where(source: [source])).to eq [link]
71
+ end
72
+
33
73
  it "properly finds the object with a find_by" do
34
74
  expect(Link.find_by(source: source, id: link.id)).to eql link
35
75
  end
@@ -96,7 +136,7 @@ describe PolymorphicIntegerType do
96
136
 
97
137
  end
98
138
 
99
- context "When using a relation to the links with eagar loading" do
139
+ context "When using a relation to the links with eager loading" do
100
140
  let!(:links){
101
141
  [Link.create(source: source, target: kibble),
102
142
  Link.create(source: source, target: water)]
@@ -111,7 +151,7 @@ describe PolymorphicIntegerType do
111
151
 
112
152
  end
113
153
 
114
- context "When using a through relation to the links with eagar loading" do
154
+ context "When using a through relation to the links with eager loading" do
115
155
  let!(:links){
116
156
  [Link.create(source: source, target: kibble),
117
157
  Link.create(source: source, target: water)]
@@ -126,7 +166,7 @@ describe PolymorphicIntegerType do
126
166
 
127
167
  end
128
168
 
129
- context "When eagar loading the polymorphic association" do
169
+ context "When eager loading the polymorphic association" do
130
170
  let(:link) { Link.create(source_id: source.id, source_type: source.class.to_s) }
131
171
  let(:source) { cat }
132
172
 
@@ -147,6 +187,7 @@ describe PolymorphicIntegerType do
147
187
  end
148
188
 
149
189
 
190
+
150
191
  end
151
192
 
152
193
  context "when the association is an STI table" do
@@ -239,7 +280,7 @@ describe PolymorphicIntegerType do
239
280
 
240
281
  self.table_name = "drinks"
241
282
 
242
- has_many :inline_links2, as: :target
283
+ has_many :inline_link2s, as: :target
243
284
  end
244
285
 
245
286
  let!(:animal) { InlineAnimal2.create!(name: "Lucy") }
@@ -4,16 +4,18 @@ require 'polymorphic_integer_type'
4
4
  require 'support/configuration'
5
5
  require 'support/link'
6
6
  require 'support/animal'
7
+ require 'support/namespaced_animal'
7
8
  require 'support/dog'
8
9
  require 'support/person'
9
10
  require 'support/food'
10
11
  require 'support/drink'
12
+ require 'byebug'
11
13
 
12
14
  RSpec.configure do |config|
13
15
  config.before(:suite) do
14
16
  database_config = YAML.load(File.open("#{File.dirname(__FILE__)}/support/database.yml"))
15
17
  ActiveRecord::Base.establish_connection(database_config)
16
- if Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new("5")
18
+ if Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new("5.2.0")
17
19
  ActiveRecord::MigrationContext.new("#{File.dirname(__FILE__)}/support/migrations").migrate
18
20
  end
19
21
  end
@@ -3,4 +3,5 @@ class Animal < ActiveRecord::Base
3
3
 
4
4
  belongs_to :owner, class_name: "Person"
5
5
  has_many :source_links, as: :source, integer_type: true, class_name: "Link"
6
- end
6
+
7
+ end
@@ -3,4 +3,12 @@ class Link < ActiveRecord::Base
3
3
 
4
4
  belongs_to :source, polymorphic: true, integer_type: true
5
5
  belongs_to :target, polymorphic: true, integer_type: true
6
+
7
+ def source=(val)
8
+ super(val)
9
+ end
10
+
11
+ def source_type=(val)
12
+ super(val)
13
+ end
6
14
  end
@@ -0,0 +1,11 @@
1
+ module Namespaced
2
+ class Animal < ActiveRecord::Base
3
+
4
+ self.store_full_sti_class = false
5
+ self.table_name = "animals"
6
+
7
+ def self.polymorphic_name
8
+ "Animal"
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polymorphic_integer_type
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle d'Oliveira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-16 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -108,11 +108,21 @@ files:
108
108
  - README.md
109
109
  - Rakefile
110
110
  - bin/setup
111
+ - gemfiles/Gemfile.rails-4.2-stable
112
+ - gemfiles/Gemfile.rails-4.2-stable.lock
113
+ - gemfiles/Gemfile.rails-5.0-stable
114
+ - gemfiles/Gemfile.rails-5.0-stable.lock
115
+ - gemfiles/Gemfile.rails-5.1-stable
116
+ - gemfiles/Gemfile.rails-5.1-stable.lock
117
+ - gemfiles/Gemfile.rails-5.2-stable
118
+ - gemfiles/Gemfile.rails-5.2-stable.lock
111
119
  - lib/polymorphic_integer_type.rb
120
+ - lib/polymorphic_integer_type/activerecord_4/belongs_to_polymorphic_association_extension.rb
121
+ - lib/polymorphic_integer_type/activerecord_4/predicate_builder_extension.rb
122
+ - lib/polymorphic_integer_type/activerecord_5_0_0/association_query_handler_extension.rb
123
+ - lib/polymorphic_integer_type/activerecord_5_0_0/polymorphic_array_value_extension.rb
112
124
  - lib/polymorphic_integer_type/extensions.rb
113
125
  - lib/polymorphic_integer_type/mapping.rb
114
- - lib/polymorphic_integer_type/polymorphic_array_value_extension.rb
115
- - lib/polymorphic_integer_type/predicate_builder_extension.rb
116
126
  - lib/polymorphic_integer_type/version.rb
117
127
  - polymorphic_integer_type.gemspec
118
128
  - spec/polymorphic_integer_type_spec.rb
@@ -129,6 +139,7 @@ files:
129
139
  - spec/support/migrations/3_create_person_table.rb
130
140
  - spec/support/migrations/4_create_food_table.rb
131
141
  - spec/support/migrations/5_create_drink_table.rb
142
+ - spec/support/namespaced_animal.rb
132
143
  - spec/support/person.rb
133
144
  homepage: ''
134
145
  licenses:
@@ -149,7 +160,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
160
  - !ruby/object:Gem::Version
150
161
  version: '0'
151
162
  requirements: []
152
- rubygems_version: 3.0.3
163
+ rubyforge_project:
164
+ rubygems_version: 2.6.14
153
165
  signing_key:
154
166
  specification_version: 4
155
167
  summary: Use integers rather than strings for the _type field
@@ -168,4 +180,5 @@ test_files:
168
180
  - spec/support/migrations/3_create_person_table.rb
169
181
  - spec/support/migrations/4_create_food_table.rb
170
182
  - spec/support/migrations/5_create_drink_table.rb
183
+ - spec/support/namespaced_animal.rb
171
184
  - spec/support/person.rb