在Rails中将group by与find_in_batches一起使用

时间:2019-03-20 20:31:10

标签: ruby-on-rails activerecord

我在MySQL中有一个具有这样的架构的topic_followers表

id, user_id, topic_id, creation_date, modified_date

我尝试使用下面的表达式来获取每个用户关注的主题列表:

TopicFollower.select("user_id, group_concat(topic_id) as topic_ids").group("user_id").find_in_batches { |group| ... }

但是,find_in_batches会自动在查询中添加“ ORDER BY topic_followersid ASC”,并迫使我在选择子句中添加“ id”,这再次与group子句冲突。有什么建议可以与组进行批处理请求吗?

另一个相关问题,何时开始批量处理请求是否有经验法则?决策过程如何?

1 个答案:

答案 0 :(得分:0)

TopicFollower.find_in_batches(batch_size: 300) do |objects|
 objects.group_by { |object| object&.user_id}
end