在Rails中,find_each和where都用于从ActiveRecord支持的数据库中检索数据.
您可以将查询条件传递到where
,如:
c = Category.where(:name => 'Ruby', :position => 1)
您可以将批量大小传递到find_each
,例如:
Hedgehog.find_each(batch_size: 50).map{ |p| p.to_json }
但以下两种代码之间有什么区别?
# code 1
Person.where("age > 21").find_each(batch_size: 50) do |person|
# processing
end
# code 2
Person.where("age > 21").each do |person|
# processing
end
代码1是否每次批量检索50个元组,代码2是否一次检索所有元组?欢迎提供更多详细解释.
我的意见是:
-
where
和find_each
都可以用于批量检索,但用户可以在使用find_each
时定义批量大小. -
find_each
不支持传递查询条件.
如果我的理解有误,请纠正我.