2

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

任何的想法?

4

1 回答 1

2

如果字段类型是 a double,您似乎可以存储无穷大值。

VALUE('1e500');

然后只需将其用作比较的上限即可。

有关更多信息,请参阅mysql 邮件列表中的此线程

于 2009-04-23T17:40:44.500 回答