2

オブジェクトの配列があり、すべてのオブジェクトが「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

動作しません

4

2 に答える 2

4

デフォルトでは、ActiveRecord は順序を保証しません。それを変更するには、次を使用します。

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

列ごとに並べます。に切り替えascdesc降順に並べ替えます。

于 2014-01-30T19:09:53.953 に答える
0

昇順のみにしたい場合は、並べ替えオプションを使用できます

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