ActiveRecord 4.0.0 版中的 ActiveRecord 功能是否find_each
可以替代?all
例如,以前我有:
all_users = User.all
这会产生一个警告,说明 ActiveRelation:all 已被弃用。
作为替代,我想出了:
User.find_each do |user|
all_users += user
end
这是可以接受的,还是我应该以另一种方式做?
我理解使用背后的原因find_each
是因为“批处理”,如果有一个非常大的数据集,它将允许查询停止运行。对于这种情况,我们假设数据集很小。
编辑
似乎只有在您使用条件时才会出现弃用错误,例如:
User.all(:conditions => ["name like ?", "%bob%"])
产生:
弃用警告:Relation#all 已弃用。如果你想预先加载一个关系,你可以调用#load(例如
Post.where(published: true).load
)。如果要从关系中获取记录数组,可以调用#to_a(例如Post.wher e(published: true).to_a
)。(在 (irb):8 从 irb_binding 调用)
上面的正确替换似乎是:
User.where("name like ?", "%bob%")