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