2011-10-09 54 views
2

我在後期模型,流派模型和genres_posts模型之間建立了HABTM關係。我的流派模型有一個名稱:字符串屬性,其中包括諸如'驚悚片''西部''恐怖''動作'喜劇'等名稱,當用戶創建一個帖子時,他們可以添加1個或多個類型的帖子。Rails 3:如何爲HABTM關係做數據庫調用

我需要能夠按特定類型列出所有用戶的帖子,以便他們可以輕鬆地在所有帖子之間來回切換類型爲「西方」的帖子和所有類型爲「操作」的帖子。

Post.last.genres給我的帖子的流派,但我怎麼會這樣做的用戶的帖子數組,如@ user.posts ??然後指定具體的流派名稱?

這是做這種類型的最聰明的方法嗎?

回答

1

除了ctcherry的答案,這也是可能的:

@user.posts.joins(:genres).where(:genres => {:name => 'western'}) 
1

我假設你將不得不流派的列表的地方,這樣你就可以先拿到類型,然後得到它的帖子用戶過濾:

@genre = Genre.find_by_name('western') 
@posts = @genre.posts.where(:user_id => @user.id) 
+2

需要做一個:包括=>:在流派查找上的帖子,所以你沒有兩個查詢 –