我想在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