def cast_value(value)
        return if value.blank?

        case value
        when String, Symbol then cast_symbol_value(value)
        when Integer, Float then cast_integer_value(value)
        else
          raise StoreModel::Types::CastError,
                "failed casting #{value.inspect}, only String, Symbol or " \
                "Integer instances are allowed"
        end
      end
Casts +value+ from DB or user to StoreModel::Model instance

@param value [Object] a value to cast

@return StoreModel::Model