Ruby排序(整数)“NilClass与3200的比较失败”

时间:2013-08-01 08:40:18

标签: ruby-on-rails ruby sorting

我想在rails应用程序中对记录进行排序:

@ebms = Ebm.all
@ebms.sort_by! {|u| u.number}

u.number被定义为整数! 问题是Rails无法将其与nil进行比较:

comparison of NilClass with 32400 failed

我该怎么做才能逃避这个错误?

2 个答案:

答案 0 :(得分:14)

您可以为number为零时使用的比较添加默认值:

@ebms = Ebm.all
@ebms.sort_by! {|u| u.number || 0}

或者您可以按照in this answer的建议选择带有数字的那些并对其进行排序,然后将没有数字的数据添加到列表中。

答案 1 :(得分:13)

如何尝试将nil转换为整数?

   @ebms = Ebm.all
   @ebms.sort_by! { |u| u.number.to_i }