Files

Class Index [+]

Quicksearch

ActiveRecord::ConnectionAdapters::PostgreSQLColumn

PostgreSQL-specific extensions to column definitions in a table.

Private Class Methods

extract_value_from_default(default) click to toggle source

Extracts the value from a PostgreSQL column default definition.

     # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 124
124:         def self.extract_value_from_default(default)
125:           case default
126:             # Numeric types
127:             when /\A\(?(-?\d+(\.\d*)?\)?)\z/
128:               $1
129:             # Character types
130:             when /\A'(.*)'::(?:character varying|bpchar|text)\z/
131:               $1
132:             # Character types (8.1 formatting)
133:             when /\AE'(.*)'::(?:character varying|bpchar|text)\z/
134:               $1.gsub(/\\(\d\d\d)/) { $1.oct.chr }
135:             # Binary data types
136:             when /\A'(.*)'::bytea\z/
137:               $1
138:             # Date/time types
139:             when /\A'(.+)'::(?:time(?:stamp)? with(?:out)? time zone|date)\z/
140:               $1
141:             when /\A'(.*)'::interval\z/
142:               $1
143:             # Boolean type
144:             when 'true'
145:               true
146:             when 'false'
147:               false
148:             # Geometric types
149:             when /\A'(.*)'::(?:point|line|lseg|box|"?path"?|polygon|circle)\z/
150:               $1
151:             # Network address types
152:             when /\A'(.*)'::(?:cidr|inet|macaddr)\z/
153:               $1
154:             # Bit string types
155:             when /\AB'(.*)'::"?bit(?: varying)?"?\z/
156:               $1
157:             # XML type
158:             when /\A'(.*)'::xml\z/
159:               $1
160:             # Arrays
161:             when /\A'(.*)'::"?\D+"?\[\]\z/
162:               $1
163:             # Object identifier types
164:             when /\A-?\d+\z/
165:               $1
166:             else
167:               # Anything else is blank, some user type, or some function
168:               # and we can't know the value of that, so return nil.
169:               nil
170:           end
171:         end

Private Instance Methods

extract_limit(sql_type) click to toggle source
    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 50
50:         def extract_limit(sql_type)
51:           case sql_type
52:           when /^bigint/;    8
53:           when /^smallint/;  2
54:           else super
55:           end
56:         end
extract_precision(sql_type) click to toggle source

Extracts the precision from PostgreSQL-specific data types.

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 65
65:         def extract_precision(sql_type)
66:           if sql_type == 'money'
67:             self.class.money_precision
68:           else
69:             super
70:           end
71:         end
extract_scale(sql_type) click to toggle source

Extracts the scale from PostgreSQL-specific data types.

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 59
59:         def extract_scale(sql_type)
60:           # Money type has a fixed scale of 2.
61:           sql_type =~ /^money/ ? 2 : super
62:         end
simplified_type(field_type) click to toggle source

Maps PostgreSQL-specific data types to logical Rails types.

     # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 74
 74:         def simplified_type(field_type)
 75:           case field_type
 76:             # Numeric and monetary types
 77:             when /^(?:real|double precision)$/
 78:               :float
 79:             # Monetary types
 80:             when 'money'
 81:               :decimal
 82:             # Character types
 83:             when /^(?:character varying|bpchar)(?:\(\d+\))?$/
 84:               :string
 85:             # Binary data types
 86:             when 'bytea'
 87:               :binary
 88:             # Date/time types
 89:             when /^timestamp with(?:out)? time zone$/
 90:               :datetime
 91:             when 'interval'
 92:               :string
 93:             # Geometric types
 94:             when /^(?:point|line|lseg|box|"?path"?|polygon|circle)$/
 95:               :string
 96:             # Network address types
 97:             when /^(?:cidr|inet|macaddr)$/
 98:               :string
 99:             # Bit strings
100:             when /^bit(?: varying)?(?:\(\d+\))?$/
101:               :string
102:             # XML type
103:             when 'xml'
104:               :xml
105:             # Arrays
106:             when /^\D+\[\]$/
107:               :string
108:             # Object identifier types
109:             when 'oid'
110:               :integer
111:             # UUID type
112:             when 'uuid'
113:               :string
114:             # Small and big integer types
115:             when /^(?:small|big)int$/
116:               :integer
117:             # Pass through all types that are not specific to PostgreSQL.
118:             else
119:               super
120:           end
121:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.