polymorphic_integer_type 2.2.1 → 2.3.0

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
- 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