Ruby on rails 获取Rails中decimal属性大于0的记录
我在Rails 3.1.0.rc4应用程序中有一个Ruby on rails 获取Rails中decimal属性大于0的记录,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我在Rails 3.1.0.rc4应用程序中有一个事务模型,该模型具有十进制属性金额。我有amount属性大于0的记录,也有amount属性小于0的记录。我想获取金额大于0的所有记录。我尝试了Transaction.where('amount>0')和Transaction.where('amount>0.0'),但在这两种情况下,都返回了所有记录,包括金额为负数的记录。当我运行Transaction.where('amount
事务模型,该模型具有十进制属性金额
。我有amount属性大于0的记录,也有amount属性小于0的记录。我想获取金额大于0的所有记录。我尝试了Transaction.where('amount>0')
和Transaction.where('amount>0.0')
,但在这两种情况下,都返回了所有记录,包括金额为负数的记录。当我运行Transaction.where('amount<0')
或Transaction.where('amount<0.0')
时,不会返回任何记录
可以对十进制属性执行这些类型的查询吗?您尝试过吗
Transaction.where('amount > ?', 0.0)
问题在于SQLite和迁移—如果打开SQLite数据库并运行SELECT typeof(amount)FROM transactions LIMIT 1
,您将看到Rails将十进制字段创建为BLOB类型,而不是十进制实型
我不确定这是否是Rails的bug,但目前您可以通过在where子句中输入数量来避免它:
Transaction.where("CAST(amount AS REAL) > 0")
您还可以在迁移过程中使用直接SQL,使用execute
方法创建amount
作为一个真正的字段(请参阅) 是的,我确实在做这件事,但为了简洁起见,我把它省略了。