如何在find_each rails中使用order

时间:2014-03-03 11:49:30

标签: ruby-on-rails

我真的不知道是否有人已经问过这个问题,如果有人已经问过这个问题,请告诉我。

我想使用find_each的顺序。它应该像

Email.find_each(:order=> "id desc").do |email|
  puts "email.id"
end

提前致谢

3 个答案:

答案 0 :(得分:20)

由于find_each内部使用find_in_batches,强制命令在主键上升序(默认情况下为id ASC)并且不允许更改它,所以&#39 ; s不可能。

更多信息:

http://api.rubyonrails.org/classes/ActiveRecord/Batches.html

答案 1 :(得分:0)

嘿伙计们感谢您的解决方案,但我找到了解决方案,所以如果有人想要使用它。 如果您没有在程序中的任何其他地方使用find_each,那么您可以覆盖ActiveRecord的批处理方法。

create a file active_record.rb in config/initializers

因为你只需要改变

if primary_key_offset
  records= relation.where(table[primary_key].lt(primary_key_offset)).to_a
end
def batch_size
  "#{quoted_table_name}.#{quoted_primary_key} DESC"
end

答案 2 :(得分:-7)

Email.all.sort {|a, b| b[:id] <=> a[:id]}.each do |email|
  puts "email.id"
end