我正在用Rails製作一個非常裸露的骨骼論壇(更多的是體驗,而不是實際生產現成的代碼),我想知道如何實現一個共同的功能。通過關聯模型的created_at排序
在topics_controller的索引中,如果我執行以下操作,最近的主題將位於主題列表的頂部。
topics_controller.rb
def index
@topics = Topic.all.order("created_at DESC")
end
不過,我希望有通過最近發表的文章訂購的主題。當用戶創建新主題時,他們需要爲該主題創建第一篇文章,所以如果我能夠根據最近創建的文章確定如何排列主題,那麼這將解決所有問題。例如,昨天創建的主題('昨天主題')可能仍然會放在今天創建的主題('今天主題')之上,如果'昨天的主題'剛剛添加了一個新帖子。
在模型中,
Topic.rb
has_many :posts
Post.rb
belongs_to :topic
注意,我敢肯定有辦法在Rails中要做到這一點,但我敢肯定它的速度更快做在數據庫中的排序,我想知道如果有辦法在數據庫中進行排序。但是,如果你只知道Rails解決方案就沒問題。
感謝。這很容易。然而,爲了讓讀者明白這個答案,我現在通過'@topics = Topic.all.order(「updated_at DESC」)更新來訂購' – BrainLikeADullPencil
這實際上是一種非常糟糕的方式。任何時候一個主題被更新,例如重命名它,它會彈出到列表的頂部。 –
致敬:我同意這會導致父對象的更新,這可能會對應用程序的性能產生影響。 *但*:這是[Rails Guide]推薦的(http://edgeguides.rubyonrails.org/caching_with_rails.html#russian-doll-caching),當你想使用俄羅斯玩偶緩存策略時,這是很重要的。 – spickermann