我有一个BlogPost
模型,其:category
属性。我正在创建一个新的BlogPost
表单,我希望选择菜单可以填充用户在先前记录中输入的每个类别。
因此,我需要一个查询来查找带有BlogPosts
的所有User ID
,然后将他们输入的每个类别的列表四舍五入。多个记录中将存在相同的类别,但当然我只想为选择菜单返回它的副本。
谢谢:)
答案 0 :(得分:2)
您可以SELECT DISTINCT
个类别向正确的用户返回INNER JOIN
:
Category
.joins( :posts )
.where( posts: { user_id: current_user.id } )
.uniq
这应该发送如下查询:
SELECT DISTINCT categories.*
FROM categories
INNER JOIN posts ON posts.category_id = categories.id
WHERE posts.user_id = [whatever]
编辑注意:要警惕uniq
既是Relation
又是Array
的方法。一定要在它被转换为数组之前在关系上调用它,否则你将在一系列非独特结果上执行uniq,这也是有效的,但在性能方面是荒谬的。