active_record-mti 0.1.0 → 0.1.1
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/lib/active_record/mti/inheritance.rb +14 -13
- data/lib/active_record/mti/model_schema.rb +0 -1
- data/lib/active_record/mti/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf67d3c346558b94eeaf4b68d354e4f29bcaa0b4
|
4
|
+
data.tar.gz: 29beb0dfeb868e4333add080161327582940ecf0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad4df7d52b11712e43a283d2e9008c7611f8bc7b96ae1545693e04a002fe694e38f7959b7f04f9fcf4aea76a0e9f8dfb110389b6fa6252ee001b636878706673
|
7
|
+
data.tar.gz: 5ea3c7c73e457bc10f16c69cc4b2a1f53b02f8c904e5cf7ccefb58ec568f4de6079bf2cebd1d512f62ad3940dc0129700ee0901e6e0040274f8356e91ba2f43e
|
@@ -33,12 +33,7 @@ module ActiveRecord
|
|
33
33
|
|
34
34
|
module ClassMethods
|
35
35
|
|
36
|
-
def
|
37
|
-
super
|
38
|
-
end
|
39
|
-
|
40
|
-
def uses_mti(table_name = nil, inheritance_column = nil)
|
41
|
-
# self.table_name ||= table_name
|
36
|
+
def uses_mti(custom_table_name = nil, inheritance_column = nil)
|
42
37
|
self.inheritance_column = inheritance_column
|
43
38
|
|
44
39
|
@uses_mti = true
|
@@ -49,7 +44,8 @@ module ActiveRecord
|
|
49
44
|
end
|
50
45
|
|
51
46
|
def uses_mti?
|
52
|
-
@uses_mti
|
47
|
+
@uses_mti = check_inheritence_of(@table_name) if @uses_mti.nil?
|
48
|
+
@uses_mti
|
53
49
|
end
|
54
50
|
|
55
51
|
private
|
@@ -58,16 +54,21 @@ module ActiveRecord
|
|
58
54
|
return nil unless table_name
|
59
55
|
|
60
56
|
result = connection.execute <<-SQL
|
61
|
-
SELECT EXISTS (
|
62
|
-
|
63
|
-
|
64
|
-
|
57
|
+
SELECT EXISTS (
|
58
|
+
SELECT 1
|
59
|
+
FROM pg_catalog.pg_inherits AS i
|
60
|
+
LEFT JOIN pg_catalog.pg_rewrite AS r ON r.ev_class = 'public.#{table_name}'::regclass::oid
|
61
|
+
LEFT JOIN pg_catalog.pg_depend AS d ON d.objid = r.oid
|
62
|
+
LEFT JOIN pg_catalog.pg_class AS cl_d ON cl_d.oid = d.refobjid
|
63
|
+
WHERE inhrelid = COALESCE(cl_d.relname, 'public.#{table_name}')::regclass::oid
|
64
|
+
OR inhparent = COALESCE(cl_d.relname, 'public.#{table_name}')::regclass::oid
|
65
|
+
);
|
65
66
|
SQL
|
66
67
|
|
67
68
|
# Some versions of PSQL return {"?column?"=>"t"}
|
68
|
-
# instead of {"
|
69
|
+
# instead of {"exists"=>"t"}, so we're saying screw it,
|
69
70
|
# just give me the first value of whatever is returned
|
70
|
-
result.try(:first).try(:values).try(:first) == 't'
|
71
|
+
return result.try(:first).try(:values).try(:first) == 't'
|
71
72
|
end
|
72
73
|
|
73
74
|
# Called by +instantiate+ to decide which class to use for a new
|
@@ -30,7 +30,6 @@ module ActiveRecord
|
|
30
30
|
|
31
31
|
"#{full_table_name_prefix}#{contained}#{undecorated_table_name(name)}#{full_table_name_suffix}"
|
32
32
|
elsif uses_mti?
|
33
|
-
|
34
33
|
# Nested classes are prefixed with singular parent table name.
|
35
34
|
if superclass < Base && !superclass.abstract_class?
|
36
35
|
contained = superclass.table_name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record-mti
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dale Stevens
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|