Skip to content

Commit e509bf1

Browse files
author
Kyle d'Oliveira
authored
Merge pull request #23 from doliveirakn/support-sti-names
Use sti_name when writing the enum
2 parents dc3fb4d + a1f54b4 commit e509bf1

5 files changed

Lines changed: 21 additions & 2 deletions

File tree

lib/polymorphic_integer_type/extensions.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ def belongs_to(name, scope = nil, **options)
3131

3232
define_method "#{foreign_type}=" do |klass|
3333
enum = mapping.key(klass.to_s)
34-
enum ||= mapping.key(klass.base_class.to_s) if klass.kind_of?(Class) && klass <= ActiveRecord::Base
34+
if klass.kind_of?(Class) && klass <= ActiveRecord::Base
35+
enum ||= mapping.key(klass.base_class.to_s)
36+
enum ||= mapping.key(klass.base_class.sti_name)
37+
end
3538
enum ||= klass if klass != NilClass
3639
super(enum)
3740
end

spec/polymorphic_integer_type_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@
2424
end
2525
end
2626

27+
context "when the source is a class that modifies the sti_name" do
28+
it "properly sets the source_type to the modified class name" do
29+
link = Link.new(source: Namespaced::Animal.new)
30+
expect(link.source_type).to eql "Animal"
31+
end
32+
end
33+
2734
context "when querying the associations" do
2835
let(:source) { cat }
2936
let(:target) { nil }

spec/spec_helper.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
require 'support/configuration'
55
require 'support/link'
66
require 'support/animal'
7+
require 'support/namespaced_animal'
78
require 'support/dog'
89
require 'support/person'
910
require 'support/food'

spec/support/animal.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ class Animal < ActiveRecord::Base
33

44
belongs_to :owner, class_name: "Person"
55
has_many :source_links, as: :source, integer_type: true, class_name: "Link"
6-
end
6+
7+
end

spec/support/namespaced_animal.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module Namespaced
2+
class Animal < ActiveRecord::Base
3+
4+
self.store_full_sti_class = false
5+
self.table_name = "animals"
6+
end
7+
end

0 commit comments

Comments
 (0)