Rails 4关系#所有弃用

在我的应用中,我创建了最近的postfunction。

@recentposts = Post.all(:order => 'created_at DESC', :limit => 5) 

这个变量有些麻烦。 当我运行测试时,我有以下错误:

弃用警告:不推荐使用Relation#all。 如果您想要加载关系,可以调用#load(例如Post.where(published: true).load )。 如果要从关系中获取记录数组,可以调用#to_a(例如Post.where(published: true).to_a )。 (来自/home/mateusz/rails4/Bloggers/app/controllers/users_controller.rb:18上的节目)

我在Google上搜索解决方案,但我找不到它……

写吧:

 @recentposts = Post.order('created_at DESC').limit(5) 

to_a不是显式必需的,因为数据在需要时是延迟加载的。

Post.all的调用将返回一个ActiveRecord::Relation ,默认情况下将延迟加载。 调用Post.all.load将返回一个急切加载的ActiveRecord::Relation 。 最后,调用Post.all.to_a将返回数组中的所有记录。

在你的情况下,你会做:

 Post.order('created_at DESC').limit(5).to_a 

这将返回前5个post的数组,按降序排列created_at

嵌套的方式

 Post.order('created_at DESC').limit(5).to_a