diff options
author | Yves Senn <yves.senn@gmail.com> | 2014-03-04 13:14:41 +0100 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2014-03-04 13:14:41 +0100 |
commit | 9ada39f62edad92ef1e754f93b71e452397f53b8 (patch) | |
tree | c874d86ca782b8018ce7e161d295cb346156025e /activerecord/lib | |
parent | 7231a135ea53d306b259782cb93d68e633397be5 (diff) | |
parent | 5c55aafd38f45ac019573f98438ffdbdc8c580f9 (diff) | |
download | rails-9ada39f62edad92ef1e754f93b71e452397f53b8.tar.gz rails-9ada39f62edad92ef1e754f93b71e452397f53b8.tar.bz2 rails-9ada39f62edad92ef1e754f93b71e452397f53b8.zip |
Merge pull request #13244 from kommen/pg_enum_type_map
Add Enum type to postgresql adapter's oids to prevent unknown OID warnings
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/oid.rb | 6 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb index e7df073627..697915f3e9 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb @@ -229,6 +229,12 @@ This is not reliable and will be removed in the future. end end + class Enum < Type + def type_cast(value) + value.to_s + end + end + class Hstore < Type def type_cast_for_write(value) ConnectionAdapters::PostgreSQLColumn.hstore_to_string value diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 9f18fdd3e5..a56ef91d07 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -801,6 +801,12 @@ module ActiveRecord leaves, nodes = nodes.partition { |row| row['typelem'] == '0' } arrays, nodes = nodes.partition { |row| row['typinput'] == 'array_in' } + # populate the enum types + enums, leaves = leaves.partition { |row| row['typinput'] == 'enum_in' } + enums.each do |row| + type_map[row['oid'].to_i] = OID::Enum.new + end + # populate the base types leaves.find_all { |row| OID.registered_type? row['typname'] }.each do |row| type_map[row['oid'].to_i] = OID::NAMES[row['typname']] |