2015-12-08 176 views
0

使用關係,我的帖子有很多評論。Rails顯示帖子最新評論

如何顯示包含最新評論的帖子?或者,更重要的是,如何顯示特定類型的最新評論的帖子?每條評論都有一個「comment_type」字段,所以我想查找最近使用特定評論類型評論的所有帖子。這應該是一個簡單的範圍,但無法弄清楚。

這是我目前的,但這仍然返回所有帖子,沒有篩選出沒有類型com_date_due類型的最新評論的帖子。

@posts = Post.includes(:comments).upcoming

scope :upcoming, -> { 
    order('comments.created_at ASC') 
    .where('comments' => {com_type: 'com_date_due', com_date: Time.now-1.day..Time.now+1.week}) 
    } 

UPDATE:

這裏是我怎麼想抓住父項的時間表流:我的每一個「註釋」查詢,以我目前的方法,它仍將返回工具,即使是最相關的「截止日期」是最上面的一個,不應該在日期查詢中。我如何根據此時間線中的關聯記錄獲取項目?我只需要查詢相關關聯記錄中的第一個項目。 enter image description here

+0

將'includes'添加到'comments' –

+0

對不起,該對象已包含註釋。讓我更新。 –

+0

補充說,在範圍 –

回答

0

如何顯示近期最特殊類型

#app/models/post.rb 
class Post < ActiveRecord::Base 
    scope :upcoming_comments, ->(type='com_date_due') { includes(:comments).where(comments: {comment_type: type, created_at: Time.now-1.day..Time.now+1.week}).order(comments: {created_at: :asc}) } 
end 

你的問題是相當廣泛的評論文章,所以這是我所期待的使用方法:@posts = Post.upcoming_comments。如果你有更具體的要求,你最好修改你的原始問題。

+0

謝謝,Rich。這仍然包括與無關評論的帖子。我無法解釋... NDA的吸吮。我想獲得所有具有最近關聯記錄的'due_date'的'Items'。因此,如果一個項目有3個「截止日期」,最近一次是+ 1年(本週到期),但它查詢本週的到期日期,因此它會選擇該項目,因爲它在本週內具有相關的截止日期,即使有一個更準確的未來到期日期。合理?如果更好,請聊天。 –

+0

Rich,請參閱我的更新。 –

+0

哇,很好的界面! –