2014-12-04 58 views
0

我有一個rails 4,它具有與habtm關係的Tag模型相關的Post模型。 標籤有一個名稱字段和一個類別字段。多個標籤可以具有相同的類別。通過導軌中的相關模型屬性過濾器索引視圖

我需要一個視圖,只顯示至少有一個標籤屬於「foo」類別的帖子。 Foo是靜態的,並且始終保持「foo」。

我已經能夠使其工作在我的職位控制器使用此代碼:

def myview 
    ids = [] 
    Tag.where(category: 'foo').each do |tag| 
    tag.posts.each do |post| 
     ids << post.id 
    end 
    end 
    @posts = Post.where(id: ids).all 
end 

儘管工作我的代碼看起來很醜陋閱讀。

我敢肯定,rails提供了一種像「@posts = Post.where標籤類別包括'foo'.all」的方式,但我無法找出一種方法。我確定我錯過了一些非常重要的東西。

+0

嘗試'Post.includes(:tags).where(「tags.category =?」,「foo」)' – 2014-12-05 01:16:24

+0

@PavittarGill pry 「FROM」posts「WHERE(tags.category ='foo') SQLite3 :: SQLException:no such column:tags.category:SELECT 「posts」。* FROM「posts」WHERE(tags.category ='foo') =># TopperH 2014-12-05 05:30:38

回答

1

Post.joins(:標籤)。凡( 'tags.category =?', 「富」)所有

在評論答案就是,比如你不想查詢。通過tag,但可能希望在您的視圖中包含一些與tag有關的信息。通過使用includes,您將避免N+1 problem。 (主題)> Post.includes(:tags).where(「tags.category(012)」)。

相關問題