我有指定事件成本的用户输入字符串(例如:“非会员 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”。
任何的想法?