У меня есть пользовательские строки ввода, указывающие стоимость события (например: «$ 4 для не членов»). Я пытаюсь разобрать верхнюю (и нижнюю) границу стоимости (в примере upper == lower == 4.00
).
Предположим, что данная строка не может быть проанализирована (возможно, она пустая). В этом случае я хочу иметь возможность хранить в базе данных, что максимальная стоимость события равна бесконечности (и минимум 0). Как мне это сделать, используя Mysql и ActiveRecord?
Что я пробовал:
> e = Event.find(1234)
> e.cost_max = 1.0/0.0
> e.save
ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'Infinity' in 'field list': UPDATE `events` SET `cost_max` = Infinity WHERE `id` = 1234
Я также попытался пометить cost_max с помощью NULL. Это работает в принципе. Однако я использую фильтры Ultrasphinx для извлечения событий, чей диапазон затрат имеет непустое пересечение с искомым диапазоном. Поскольку фильтры Ultrasphinx принимают только условия хеширования (я не прав?), Мои параметры ограничены этим:
search_params[:filter].merge!(:cost_max => 0.0..99)
Это означает, что "OR cost_max is NULL" не допускается.
Есть идеи?