想知道是否说事件是活动记录关系,这...
events.each do |e|
next unless e.game?
....
比这更糟糕...
es = events.where(event_type: "game")
es.each do |e|
....
我在想通过SQL过滤可能比迭代每个更快,但不确定循环每个在性能上是否没有什么不同
每个都慢得多。您应该始终优先考虑 ActiveRecord 方法/查询而不是普通 Ruby。
es = events.where(event_type: "game")
es.find_each do |e|
....
events.where(...)
将返回活动记录关系。因此,您可以使用 find_each
.文档建议不要在小集合上使用find_each
,但我喜欢规划可扩展性
编辑:如果您有任何限制或偏移量,find_each
将忽略限制并使用默认find_in_batches
,该将限制覆盖为1000。