polymorphic_integer_type 2.2.2 → 2.2.3

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
2
  SHA1:
3
- metadata.gz: 167cd58ce2ec474eea9268af532e07815e3c1a0c
4
- data.tar.gz: a523c263e4822806d3ce02543417658f4904c0a0
3
+ metadata.gz: f818991a7fa6b0835e39fd4133d6bc7c163e6d4e
4
+ data.tar.gz: 2e2715bfdb1d56e36d142b9c5b9bebf785795ab3
5
5
  SHA512:
6
- metadata.gz: e1913d6fea43ec6707438afbec0c60c8525e015e75062f8115afb7d4176143bb4efe8d79364dfd465d6551c8bb131815933fca85aa1df98813e62541ca8cca4d
7
- data.tar.gz: d4adcee63eeb967d4e4ecb17a53ec72cae5d23937c52a8e3030f4d27da9cf771b6a136583e9e0c2bf5a75ff31ab94895b2bcb2a7232ae140714a35961292242d
6
+ metadata.gz: d9616ed1ea9e3bd402b4632b0c3b9aa4355a282424941f1538a86498420f84f91e06e9471cf7d0e243afad70f9dc74f3348b5252a4c2aea455a6b0bdc7f40c04
7
+ data.tar.gz: e6b3723b6b3de1b558797c2334252369896674c451f40760ff0a1f8ccde01c14a55058c30f4fc1a7d117c70406a1e67880ecaf5cf597270358033d3e88c96d01
@@ -24,26 +24,32 @@ 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
- 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)
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.sti_name)
38
+ enum ||= mapping.key(klass.base_class.to_s)
39
+ enum ||= mapping.key(klass.base_class.sti_name)
40
+ end
41
+ enum ||= klass if klass != NilClass
42
+ super(enum)
37
43
  end
38
- enum ||= klass if klass != NilClass
39
- super(enum)
40
- end
41
44
 
42
- define_method "#{name}=" do |record|
43
- super(record)
44
- send("#{foreign_type}=", record.class)
45
+ define_method "#{name}=" do |record|
46
+ super(record)
47
+ send("#{foreign_type}=", record.class)
48
+ end
45
49
  end
46
50
 
51
+ include(foreign_type_extension)
52
+
47
53
  validate do
48
54
  t = send(foreign_type)
49
55
  unless t.nil? || mapping.values.include?(t)
@@ -1,3 +1,3 @@
1
1
  module PolymorphicIntegerType
2
- VERSION = "2.2.2"
2
+ VERSION = "2.2.3"
3
3
  end
data/spec/support/link.rb CHANGED
@@ -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
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.2
4
+ version: 2.2.3
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-12-05 00:00:00.000000000 Z
11
+ date: 2019-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord