module SpatialFeatures::Utils

Public Instance Methods

base_class(klass) click to toggle source
# File lib/spatial_features/utils.rb, line 20
def base_class(klass)
  case klass
  when String
    klass.constantize.base_class.to_s
  when ActiveRecord::Base
    klass.class.base_class
  when Class
    klass.base_class
  end
end
base_class_of(object) click to toggle source
# File lib/spatial_features/utils.rb, line 16
def base_class_of(object)
  base_class(class_of(object))
end
class_name_with_ancestors(object) click to toggle source
# File lib/spatial_features/utils.rb, line 12
def class_name_with_ancestors(object)
  class_of(object).ancestors.select {|k| k < ActiveRecord::Base }.map(&:to_s)
end
class_of(object) click to toggle source

Returns the class for the given, class, scope, or record

# File lib/spatial_features/utils.rb, line 32
def class_of(object)
  case object
  when ActiveRecord::Base
    object.class
  when ActiveRecord::Relation
    object.klass
  when String
    object.constantize
  else
    object
  end
end
id_sql(object) click to toggle source
# File lib/spatial_features/utils.rb, line 45
def id_sql(object)
  case object
  when ActiveRecord::Base
    object.id || '0'
  when String
    id_sql(object.constantize)
  else
    object.unscope(:select).select(:id).to_sql
  end
end
polymorphic_condition(scope, column_name) click to toggle source
# File lib/spatial_features/utils.rb, line 5
def polymorphic_condition(scope, column_name)
  sql = "#{column_name}_type = ?"
  sql << " AND #{column_name}_id IN (#{id_sql(scope)})" unless scope.is_a?(Class)

  return class_of(scope).send :sanitize_sql, [sql, base_class_of(scope)]
end