我有指定事件成本的用户输入字符串(例如:"$4 for non-members")。我试图解析出开销的上界(和下界)(在本例中为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“。
有什么想法吗?
发布于 2009-04-23 17:40:45
如果字段类型是double,似乎可以存储无穷大的值。
VALUE('1e500');然后就是用它作为比较的上限的问题了。
有关更多信息,请参阅mysql邮件列表中的this thread。
https://stackoverflow.com/questions/782781
复制相似问题