Ruby,以正确的顺序迭代对象数组

时间:2014-01-30 19:07:17

标签: ruby activerecord sinatra sinatra-activerecord

我有一个对象数组,每个对象都响应'order'方法。

我可以写方法

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

不起作用

2 个答案:

答案 0 :(得分:4)

默认情况下,ActiveRecord不保证任何订单。要更改它,请使用:

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

按列排序。将asc切换为desc以按降序排序。

答案 1 :(得分:0)

您可以使用排序选项,以防您只需要升序

a = Article.find(2345)
pages = a.article_pages.all.sort_by &:order