【问题标题】:Rails 3: how to do database call for HABTM relationshipRails 3:如何为 HABTM 关系进行数据库调用
【发布时间】:2011-10-09 01:24:40
【问题描述】:

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

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

Post.last.genres 为我提供了帖子的类型,但是对于诸如@user.posts 之类的用户帖子数组,我该如何做呢?然后指定具体的流派名称?

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 model-associations


    【解决方案1】:

    除了ctcherry的回答,这个也是可以的:

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

    【讨论】:

      【解决方案2】:

      我假设你会在某个地方有一个流派列表,所以你可以先获取流派,然后获取用户过滤的帖子:

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

      【讨论】:

      • 需要在类型查找上执行 :include => :posts,这样您就没有两个查询
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多