我真的不知道是否有人已经问过这个问题,如果有人已经问过这个问题,请告诉我。
我想使用find_each的顺序。它应该像
Email.find_each(:order=> "id desc").do |email|
puts "email.id"
end
提前致谢
答案 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