Подтвердить что ты не робот

Rails 4 Связь # все отклонения

В моем приложении я создал недавнюю функцию сообщений.

 @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, но я его не нашел...

4b9b3361

Ответ 1

Просто напишите:

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

to_a явно не требуется, так как при необходимости данные будут загружены ленивыми.

Ответ 2

Вызов 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 в порядке убывания.

Ответ 3

Вложенный путь

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