イベントの費用を指定するユーザー入力文字列があります (例: 「非会員は $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」は許可されません。
何か案が?