class Article < ActiveRecord::Base
has_many :comments, dependent: :destroy
validates :title, length: { minimum: 3, maximum: 100 }
validates :text, length: { minimum: 5, maximum: 3000 }
end
,我有
class Comment < ActiveRecord::Base
belongs_to :article
validates :body, presence: true,
length: { maximum: 3000 }
end
我需要向用戶顯示物品可獲取的名單,而是由意見的時間戳排序。就像圖像板一樣,當你在線上發佈內容時,線程會「碰撞」到頂端。
我設法與<% @articles.joins(:comments).order('comments.created_at desc').each do |article| %>
來。它排列正確的方式,但它顯示相同的線程時間上的帖子數。例如,如果一個線程有5個回覆,則向用戶顯示5個不同的時間。我怎樣才能解決這個問題?使用組.group('articles.title')
實際工作。但我發現加入不包括沒有評論的文章。我把它切換到包括,顯然它工作。但是現在我有一個問題,那就是沒有任何評論的帖子就會出現在列表的最底部,我需要它們在最上面。一個解決方案是在創建文章時創建一個空評論,但我不知道如何做--EDIT2-我解決了它。我做了一個自動評論與帖子一起創建,所以每個帖子都有一個帶時間戳的評論來比較。我只是把在articles_controller.rb此行@comment = @article.comments.create(body: '~start~')
內@ article.save環
無需創建空的註釋。大多數數據庫可以首先或最後一次訂購空值。 postgres中的例子是'@ articles.joins(:comments).group('articles.title')。order('comments.created_at DESC NULLS FIRST')'[link](http://www.postgresql.org/ docs/9.4/static/queries-order.html) – maartencls