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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |