首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于关联方法的排序

问基于关联方法的排序
EN

Stack Overflow用户
提问于 2015-06-15 15:25:25
回答 1查看 90关注 0票数 1

我在Business中有一个方法,就是certified?方法。

我想使用certified?方法对Quotation模型进行排序。

该方法的返回值是一个布尔值。因此,为了对其进行排序,我希望将经过认证的企业放在列表的首位。

两者之间的关联如下:

Business属于Quotation

下面是我现在是怎么做的:

Quotation.by_biz_id(biz.id).includes(:business).sort_by {|quote| quote.business.certified? <=> quote.business.certified? }

正如你所看到的,它里面有很多方法链接。有没有更新更好的重构代码的方法?

特别是重复条件:{|quote| quote.business.certified? <=> quote.business.certified?}

如果我删除<=>条件,错误是这样的:

ArgumentError: comparison of FalseClass with true failed

EN

回答 1

Stack Overflow用户

发布于 2015-06-16 19:26:58

您还可以使用group_by而不是排序,如

代码语言:javascript
复制
Quotation.includes(:business).group_by do |quote|
  quote.business.certified? ? "certified" : "not_certified"
end

它将返回包含关键字的Hash,其形式为certified,带有经过认证的业务报价的值,并保留在not_certified中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30839479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档