0

編輯: 其實我只是決定反對我的reblogging的方式,而是決定通過複製並從文章中創建一個全新的記錄,然後添加a:真正的列到它。在我看來,它在邏輯上有點乾淨,它避免了下面列出的所有問題。insert在article.articles陣列中正確位置插入文章created_at排序


在一個博客程序,我已經實現了通過與兩個外鍵聯接一個reblog模型reblogging別人的博客的文章的可能性。

在我的博客中顯示動作,然後我將blog.articles和blog.reblogged_articles添加到一個文章的單個數組中。然後我通過每個元素的created_at屬性對這個數組進行排序。

但是,對於這篇文章,我寧願使用他們的reblog連接模型的created_at屬性,這樣一個博客文章最初會出現在博客的頂部。一篇文章應該始終在博客中佔據自己的位置,就好像它是由博客的所有者創建的。但是目前,如果文章是在3年前創建的,則博客底部可能會顯示一篇文章。

在將兩個數組放在一起之前,我可能需要修改my_on_articles數組的created_at屬性。但我該怎麼做?

編輯: 只是一個例子來闡明:

博客ID爲1:
文章編號1,created_at:一年前。
文章ID 2,created_at:一個月前。
文章ID 3,created_at:一個星期前。
文章ID 4,created_at:一天前。

博客ID 2:
文章ID 5,created_at:一天前。
文章ID 6,created_at:一小時前。
文章標識7,created_at:30分鐘前。
文章ID 8,created_at:大約10分鐘前。

現在,博客2重新登錄博客1的第1條。 我希望將此文章顯示在博客2的頂部,就好像它剛剛創建一樣。但是,由於該文章實際上是在一年前創建的,因此它將顯示在Blog 2的底部。我怎樣才能解決這個問題?

根據連接模型Reblog的created_at而不是文章本身的created_at,將他們的「正確」位置上的文章帶入最合適的方法是什麼?

回答

0

最簡單的解決方案可能只是爲您的文章模型添加last_activity_date列。每當一篇文章是簡體中文時,請更新相應文章的last_activity_date。然後,當你得到的文章,Article.order(:last_activity_date => 'DESC')

編輯:根據您的澄清 -

# Merge arrays of article objects 
all_articles = current_blog_articles | reblogged_articles 
all_articles.sort_by! {|x| -x.created_at } # Sort by created_at descending 
+0

感謝您的回答!我喜歡這種方法,但是,我仍然無法將我的blog.articles和blog.reblogged_articles混合排列,因爲在last_activity中,我自己博客的文章會根據其他人的reblog而混淆,還是我理解你的方法錯了? –

+0

我認爲我沒有真正把我的問題說得很好,「如果文章是在3年前創建的,那麼目前,博客的底部可能會出現一篇文章。」我的意思是,博客用戶的角度,他只爲自己的博客寫了一些其他文章。這篇新文章應該出現在重新博客用戶的博客的頂部,儘管它可能在3年前在原創博客中創建。 –