【发布时间】:2018-05-18 21:13:14
【问题描述】:
我在 RoR 操作中将原始 SQL 发送到 MySQL 表:
sql1 = "SELECT COUNT(*) as cnt FROM testtabl WHERE gender= 'female' AND
ROUND(height, 2) = ROUND('#{height}' , 2);"
sql_result1 = ActiveRecord::Base.connection.execute(sql1)
logger.debug('count is: '+sql_result1.to_s)
如何从 sql_result1 访问值 'cnt'?
日志显示:
count is: #<Mysql2::Result:0xb73c6c0>
【问题讨论】:
-
如果你已经在使用activerecord,为什么还需要使用raw sql?
-
编辑您的帖子并添加
p sql_result1的输出。 -
尝试
sql_result1.to_h可能会得到一个哈希... -
你可以使用
Model.where(gender: 'female').where('round(height, 2) = round(?, 2)', height).count,不是吗? -
哦,另外,您正在比较浮点数的精确相等性。
round(.., 2)not 的意思是“神奇地创建一个始终与相似数字匹配的数字”。浮点精度仍然可以创建应该相同但无法通过相等性测试的数字。
标签: ruby-on-rails