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

Ruby,按正确的顺序迭代对象数组,ruby,activerecord,sinatra,sinatra-activerecord,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.arti

我有一个对象数组,每个对象都响应“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

不工作默认情况下,ActiveRecord不保证任何订单。要更改此设置,请使用:

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

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

默认情况下,ActiveRecord不保证任何顺序。要更改此设置,请使用:

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

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

如果您只希望排序选项以升序排列,则可以使用排序选项

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

如果您只想使用升序,可以使用排序选项

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

我的对象按顺序保存在数据库中。因此,如果我调用object.order,我会得到1,2,3,4,5等。我需要迭代按照这个顺序进行。这是rails的问题吗?不,我正在使用Sinatra和ActiveRecord。我的对象以一个顺序保存在db中。因此,如果我调用object.order,我会得到1,2,3,4,5等。我需要迭代按照这个顺序进行。这是rails的问题吗?不,我使用的是Sinatra和ActiveRecordUpdated解决方案。下次粘贴您实际尝试过的代码,而不是事后更改。您确定“默认情况下,ActiveRecord将按主键升序排列”吗?如果没有ORDER BY发送到数据库,那么您通常会以PK顺序将其返回,但除非您给数据库一个明确的ORDER BY子句。Edited,否则不会保证有特定的顺序。很好,它是决定默认排序顺序的基础数据库。更新的解决方案。下次粘贴您实际尝试过的代码,而不是事后更改。您确定“默认情况下,ActiveRecord将按主键升序排列”吗?如果没有ORDER BY发送到数据库,那么您通常会以PK顺序将其返回,但除非您给数据库一个明确的ORDER BY子句。Edited,否则不会保证有特定的顺序。很好,它是决定默认排序顺序的底层数据库。