我想在Rails 5应用程序中合并三个活动记录数组,以便在主页上有很好的作业集合,论坛主题和博客。合并三个活动记录数组
我有以下代码:
application_controller.rb
def home
@blogs = Blog.limit(6)
@jobs = Job.where(approved: true).limit(6)
@forum_threads = ForumThread.includes(:forum_posts).limit(6)
@everything = @blogs + @jobs + @forum_threads
end
home.html.erb
<% @everything.sort_by(&:created_at).reverse.each do |item| %>
<% if item.is_a?(Job) %>
<%= render partial: "application/partials/home_job", locals: {item: item} %>
<% elsif item.is_a?(ForumThread) %>
<%= render partial: "application/partials/home_forum", locals: {item: item} %>
<% elsif item.is_a?(Blog) %>
<%= render partial: "application/partials/home_blog", locals: {item: item} %>
<% end %>
<% end %>
我遇到的问题是,这个代码不被显示在日期顺序记录相反,我有一个相当随机的工作集合,论坛主题和博客,从一个看似随机的日期开始。
如果我添加一个新工作,它不会出现在显示在/home
页面上的集合中。但是,如果我从数据库中删除所有记录并开始添加新记录,那么代码将正常工作,并按照我期望的行为以正确的顺序显示帖子。
我无法将此代码直接推送到Heroku,因为我无法删除生产中已存在的所有记录。这几乎就像需要清除某种缓存。有谁知道发生了什么事?
原则上好。我建议'Blog.order(created_at::desc).limit(6)',否则限制在订单和最新可能不包括在内。 – SteveTurczyn
如果我这样做,那么三个不同的集合被分组在一起。因此,所有的博客文章彼此相邻,彼此相邻的工作......我希望他们都混合在一起,并按created_by排序 – BillyBib
不,您仍然可以执行@everything然后执行'sort_by' ... @KcUS_unico答案只是确保您首先获得正确的记录。 – SteveTurczyn