Ответ 1
Просто напишите:
@recentposts = Post.order('created_at DESC').limit(5)
to_a
явно не требуется, так как при необходимости данные будут загружены ленивыми.
В моем приложении я создал недавнюю функцию сообщений.
@recentposts = Post.all(:order => 'created_at DESC', :limit => 5)
Эта переменная вызывает некоторые проблемы. Когда я запускаю тесты, у меня возникает следующая ошибка:
ПРЕДУПРЕЖДЕНИЕ О ДЕПРЕКАЦИИ: Отношение # все устарело. Если вы хотите загрузить отношение, вы можете вызвать #load (например,
Post.where(published: true).load
). Если вы хотите получить массив записей из отношения, вы можете вызвать #to_a (например,Post.where(published: true).to_a
). (вызывается из шоу /home/mateusz/rails 4/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 сообщений, отсортированных по created_at
в порядке убывания.
Вложенный путь
Post.order('created_at DESC').limit(5).to_a