给定以下代码
class Things < ActiveRecord::Base
belongs_to :user
belongs_to :sock
end
class User < ActiveRecord::Base
has_many :things
has_many :socks, through: :things
end
class Sock < ActiveRecord::Base
has_many :things
has_many :users, through: :things
end
假设第一个用户有两只袜子,而所有其他用户都有一只袜子。总共有 1000 个用户和 1001 个袜子。您希望find_in_batches
返回与正常选择相同数量的记录。
User.joins(:socks).count
=> 1001
agg = []
User.joins(:socks).find_in_batches{|g| agg += g}
agg.count
=> 1000