如何返回与作用域has_many:through关联的连接表对象

时间:2015-11-16 08:48:49

标签: ruby ruby-on-rails-4

我有三个型号:贴,标记,标记。 markingposttag之间的联接表。通过标记发布has_many标记和has_many标记。我确定"粘"我想要创建范围的标签。我的目标是在特定帖子及其标签(具有"粘性"范围)的标签之间获得标记。有没有办法通过加入或以比这更简洁的方式做到这一点?

markings = post.tags.sticky.map { |t| Marking.where(post_id: post.id, tag_id: t.id }

以下查询似乎是"寻找"在我想要的标记处,但它将返回标记而不是标记:

post.tags.sticky.joins(:markings)

我在API dock中看到的#joins看起来很像我只能返回调用#joins类型的对象。由于我无法在标记对象上调用#joins,我可能会运气不好?

1 个答案:

答案 0 :(得分:1)

由于markings关联使用了tags,因此joins(:markings)不是必需的。您可以使用select语句:

post.tags.sticky.select('markings.id, markings.whatever_attribute')