Метод поиска last
вернет результаты в порядке возрастания. Если вы хотите вернуть результаты, упорядоченные по created_at
, в порядке убывания, вот как я хотел бы с ним поработать (включая единичный тест).
приложение/модели/post.rb
class Post < ActiveRecord::Base
def self.recent(max = 3)
limit(max).order(created_at: :desc)
end
end
спецификации/модели/post_spec.rb
RSpec.describe Post, type: :model do
describe ".recent" do
it "returns the most recent" do
first_post = Post.create(created_at: 3.days.ago)
second_post = Post.create(created_at: 2.days.ago)
third_post = Post.create(created_at: 1.day.ago)
result = Post.recent(2)
expect(result).to eq([third_post, second_post])
end
end
end
В контроллере (ы):
@recent_posts = Post.recent
На ваш взгляд:
<div id="recent-posts">
<ul>
<% @recent_posts.each do |post| %>
<li><%= post.title %></li>
<% end %>
</ul>
</div>
Если вы хотите повторно использовать код представления, поместите его в частичное и визуализировать, что на ваших взглядах.
Что вы подразумеваете под последними тремя сообщениями? – locoboy
это фото-сайт. Итак, последние 3 фотографии были загружены. – user3561169
Помогла ли вам хоть один из ответов? –