aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-05-21 07:44:42 -0700
committerSean Griffin <sean@thoughtbot.com>2014-05-21 07:44:42 -0700
commit30bf07d172f2764b27e887ff3a122ce3c08ff5fe (patch)
treea837466fc44970347c48445db8a2926a7cc8d189 /activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb
parentb452e4a39b8a4a8880825cc1868df656ede7d609 (diff)
downloadrails-30bf07d172f2764b27e887ff3a122ce3c08ff5fe.tar.gz
rails-30bf07d172f2764b27e887ff3a122ce3c08ff5fe.tar.bz2
rails-30bf07d172f2764b27e887ff3a122ce3c08ff5fe.zip
Move PG OID types to their own files
As we promote these classes to first class concepts, these classes are starting to gain enough behavior to warrant being moved into their own files. Many of them will become quite large as we move additional behavior to the type objects.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb
new file mode 100644
index 0000000000..2f7d1be197
--- /dev/null
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb
@@ -0,0 +1,26 @@
+module ActiveRecord
+ module ConnectionAdapters
+ module PostgreSQL
+ module OID # :nodoc:
+ class Vector < Type::Value
+ attr_reader :delim, :subtype
+
+ # +delim+ corresponds to the `typdelim` column in the pg_types
+ # table. +subtype+ is derived from the `typelem` column in the
+ # pg_types table.
+ def initialize(delim, subtype)
+ @delim = delim
+ @subtype = subtype
+ end
+
+ # FIXME: this should probably split on +delim+ and use +subtype+
+ # to cast the values. Unfortunately, the current Rails behavior
+ # is to just return the string.
+ def type_cast(value)
+ value
+ end
+ end
+ end
+ end
+ end
+end