Posted at

ActiveRecord#all は、idの順番が保証されないので注意! ActiveRecord#order を使おう!

More than 5 years have passed since last update.

User.all.each do |user|

print "#{user.id}, "
end

ってやったらid順にちゃんと1, 2, 3, 4, 5, ...って表示されるかなと思ったら、そんなことは無かった。

順番を保証したいのなら、 ActiveRecord#order を使いましょう!

例えば今回みたいにid順に並べたいなら、

User.order('id').each do |user|

print "#{user.id}, "
end

これで順番通りに出力されます!

逆順が良いなら、User.order('id desc').each do |user|...(以下略) ってやれば良いみたい。