rails中的group_by

作者:周星 发布:2017-10-07

       在rails应用程序中经常会遇到这样的需求,把查询出的ActiveRecord数据按照指定的方式来排序,比如本博客的博客列表页和友情链接页,这个时候我们就要用到group_by,简单理解就是按照某种方式分组,为了说明group_by是如何工作的,我们在console中示范一下。

      在上面的代码中,我们先使用range创建了一个包括从1到20的数组,然后对这个数组使用group_by,group_by方法需要传递一个block作为参数,然后返回一个hash,在上面的例子中,值1,2,3,4除以5会得到0(整除),返回的hash中会包括一个键值对,键为0,值为[1, 2, 3, 4],以此类推,2对应的值为[10, 11, 12, 13, 14],最后20是唯一一个除以5等于4的值,所以键4对应[20]。

      现在我们看它在rails中的具体应用。

       我们把每一个blog都传入了group_by的block,然后它返回了我们一个hash,通过console的例子我们可以猜到,这个hash的键是blog的blog_category_id,值是包括N个blog的ActiveRecord对象的数组,数组中每个blog的blog_category_id都等于这个键值。然后我们就可以在views中遍历这个@blogs变量


得到的界面就是我们的博客列表页

当然我们可以尝试按照其它需求来给blogs分组,比如创建日期:


同样在views中遍历@blogs

得到的页面就是这个样子



如果您对本文所述有疑惑或建议,请直接在下面回复或联系博主

支付宝扫码赞助博主


评论(0)