我有三个型号:贴,标记,标记。 marking
是post
和tag
之间的联接表。通过标记发布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,我可能会运气不好?
答案 0 :(得分:1)
由于markings
关联使用了tags
,因此joins(:markings)
不是必需的。您可以使用select语句:
post.tags.sticky.select('markings.id, markings.whatever_attribute')