新手问题 Rails5 空数据判断后报错死循环?

dingfengju · 2018年08月30日 · 最后由 dingfengju 回复于 2018年09月03日 · 1485 次阅读

代码如下,rails 版本 5.2.0,ruby 版本 2.5.1,mysql 5.6.4

datas = DDataHourlyYyyy.where(:data_time => @last_data_time, :station_id => @station_ids)
datas.sort! {|x, y| y.aqi <=> x.aqi} if datas.present? # 按aqi降序排序

报错如下图:

劳烦大神解惑,不慎感激!

用 blank 试试

bighuzi 回复

blank?,empty?,present?结果都一样,因为这张表是个空表,添加一个数据就不错了,删了就会报错,费解

可以打印下判断,如果是空的话应该不会进入排序。

bighuzi 回复

你先 to_a 一下再 sort!

直接抛了一个 SystemStackError 异常不报错了而且程序正常走了,(⊙﹏⊙)b

dingfengju 回复

试一下

unless data.count.zero?

unless datas.count.zero?

lithium4010 回复

跟这个没关系,主要是 datas 单独就会报错,所有的方法就不能正确调用,所以就抛异常了,然后方法就正常走了

68, 69 行是个啥?

重启服务

统一回复,抛异常解决了,大家支的招之前都测试过了,谢

dingfengju 关闭了讨论。 09月03日 10:34
需要 登录 后方可回复, 如果你还没有账号请 注册新账号