module Spotlight # A configurable solr filter for the exhibit class Filter < ActiveRecord::Base belongs_to :exhibit validates :field, :value, presence: true def to_hash return {} unless field { field => cast_value } end private def cast_value return value unless field if field.ends_with? Spotlight::Engine.config.solr_fields.boolean_suffix value_to_boolean(value) else value end end def value_to_boolean(v) if defined? ActiveModel::Type::Boolean ActiveModel::Type::Boolean.new.cast v elsif defined? ActiveRecord::Type::Boolean # Rails 4.2+ ActiveRecord::Type::Boolean.new.type_cast_from_database v else ActiveRecord::ConnectionAdapters::Column.value_to_boolean v end end end end