加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 对于sort_by上的nil对象的NoMethodError,并且

发布时间:2020-12-17 02:34:38 所属栏目:百科 来源:网络整理
导读:所以我有一堆用户,他们都有user.dj_name属性.这是该模型的有效必要条件,但我仍然在这里保持谨慎,因为我遇到了问题. 我想获得一堆用户,然后通过他们的dj_name订购它们.像这样的东西: @djs = Event.all.map { |e| e.program.user }.sort_by {|x,y| x.dj_name
所以我有一堆用户,他们都有user.dj_name属性.这是该模型的有效必要条件,但我仍然在这里保持谨慎,因为我遇到了问题.

我想获得一堆用户,然后通过他们的dj_name订购它们.像这样的东西:

@djs = Event.all.map { |e| e.program.user }.sort_by {|x,y| x.dj_name <=> y.dj_name }

它吸引了所有有活动的DJ(节目).它失败了“NoMethodError:未定义的方法`dj_name’代表nil:NilClass”

所以我尝试过:

@djs = Event.all.map { |e| e.program.user }
@djs.compact.sort_by! {|x,y| x.dj_name <=> y.dj_name rescue nil}

而且它没有排序.如果没有“rescue nil”条款,我会得到同样的错误.

如果我做了拒绝!如果对象是零,我什么也得不到.

> @djs.reject! {|d| d.nil? }
=> nil

似乎数组中没有任何对象是nil,排序机制给我错误,并且挽救它只是停止排序过程并返回一个未更改的数组.

HALP?

解决方法

对这种任务使用数据库排序.您可以使用以下命令恢复查询:

Event.all(:include => {:program => :user},:order => 'users.dj_name')

解耦此查询将导致include方法在模型上创建连接关联,并在订单上创建ORDER BY.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读