2

我在我的帖子模型、流派模型和流派_帖子模型之间建立了一个 HABTM 关系。我的流派模型有一个 name:string 属性,它由诸如“惊悚片”、“西部片”、“恐怖片”、“动作”喜剧等名称组成,当用户创建帖子时,他们可以在帖子中添加 1 个或多个流派。

我需要能够按特定类型列出用户的所有帖子,以便他们可以轻松地在所有类型为“西方”的帖子和所有类型为“动作”的帖子之间来回切换。

Post.last.genres 给了我帖子的类型,但是我将如何为一组用户的帖子(例如@user.posts)做呢?然后指定具体的流派名称?

这是做这种事情的最聪明的方法吗?

4

2 回答 2

1

我假设您将在某处拥有流派列表,因此您可以先获取流派,然后再获取按用户过滤的帖子:

@genre = Genre.find_by_name('western')
@posts = @genre.posts.where(:user_id => @user.id)
于 2011-10-09T01:40:26.267 回答
1

除了ctcherry的回答之外,这也是可能的:

@user.posts.joins(:genres).where(:genres => {:name => 'western'})
于 2011-10-09T02:03:00.120 回答