Rot*_*ots 4 ruby activerecord sinatra ruby-on-rails-4 sinatra-activerecord
ActiveRecord 4.0.0 版本中的ActiveRecord 功能是否find_each可以接受替代?all
例如,之前我有:
all_users = User.all
Run Code Online (Sandbox Code Playgroud)
它会产生一条警告,指出类似于 ActiveRelation:all 的内容已被弃用。
作为替代,我想出了:
User.find_each do |user|
all_users += user
end
Run Code Online (Sandbox Code Playgroud)
这是可以接受的,还是我应该以另一种方式做?
我理解使用背后的原因find_each是因为“批处理”,如果存在非常大的数据集,它将允许查询停止运行。我们假设这种情况下数据集很小。
编辑
似乎只有当您使用条件时才会出现弃用错误,例如:
User.all(:conditions => ["name like ?", "%bob%"])
Run Code Online (Sandbox Code Playgroud)
产生:
弃用警告: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%")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4984 次 |
| 最近记录: |