2

我有一个对象数组,每个对象都响应“订单”方法。

我可以写方法

objects = Objects.all
objects.each do |i|
 puts i.order
end

但我不确定订单是否正确。有没有什么快速的方法可以按照每个对象的正确顺序迭代我的数组?

更新:真实案例。

class Articles < ActiveRecord::Base
 as_many :article_pages
end

a = Article.find(2345)
pages = a.article_pages
pages.each ...
pages.first.order = 1
pages.last.order = 5

我需要按照顺序在我的页面中迭代......

a.article_pages.order('order').each

不工作

4

2 回答 2

4

默认情况下,ActiveRecord 不保证任何顺序。要改变这一点,请使用:

a = Article.find(2345)
pages = a.article_pages.order('order asc')

按列排序。切换ascdesc降序排列。

于 2014-01-30T19:09:53.953 回答
0

You can use sort option in case you want it in ascending only

a = Article.find(2345)
pages = a.article_pages.all.sort_by &:order
于 2014-01-31T10:36:37.440 回答