Class: ActiveRecord::ConnectionAdapters::PostGIS::SpatialColumnInfo
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::PostGIS::SpatialColumnInfo
- Defined in:
- lib/active_record/connection_adapters/postgis/spatial_column_info.rb
Overview
Do spatial sql queries for column info and memoize that info.
Instance Method Summary collapse
- #all ⇒ Object
-
#get(column_name, type) ⇒ Object
do not query the database for non-spatial columns/tables.
-
#initialize(adapter, table_name) ⇒ SpatialColumnInfo
constructor
A new instance of SpatialColumnInfo.
Constructor Details
#initialize(adapter, table_name) ⇒ SpatialColumnInfo
Returns a new instance of SpatialColumnInfo.
8 9 10 11 |
# File 'lib/active_record/connection_adapters/postgis/spatial_column_info.rb', line 8 def initialize(adapter, table_name) @adapter = adapter @table_name = table_name end |
Instance Method Details
#all ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/active_record/connection_adapters/postgis/spatial_column_info.rb', line 13 def all info = @adapter.query( "SELECT f_geometry_column,coord_dimension,srid,type FROM geometry_columns WHERE f_table_name='#{@table_name}'" ) result = {} info.each do |row| name = row[0] type = row[3] dimension = row[1].to_i has_m = !!(type =~ /m$/i) type.sub!(/m$/, "") has_z = dimension > 3 || (dimension == 3 && !has_m) result[name] = { dimension: dimension, has_m: has_m, has_z: has_z, name: name, srid: row[2].to_i, type: type, } end result end |
#get(column_name, type) ⇒ Object
do not query the database for non-spatial columns/tables
38 39 40 41 42 |
# File 'lib/active_record/connection_adapters/postgis/spatial_column_info.rb', line 38 def get(column_name, type) return unless PostGISAdapter.(type.to_sym) @spatial_column_info ||= all @spatial_column_info[column_name] end |