我有一个BlogPost
带有:category
属性的模型。我正在制作一个新BlogPost
表单,我希望选择菜单能够使用用户在以前的记录中输入的每个类别来填充自己。
因此,我需要一个查询来查找所有BlogPosts
带有 a 的内容User ID
,然后将他们输入的每个类别的列表进行四舍五入。同一类别将存在于多个记录中,但我当然只想为选择菜单返回它的副本。
谢谢 :)
我有一个BlogPost
带有:category
属性的模型。我正在制作一个新BlogPost
表单,我希望选择菜单能够使用用户在以前的记录中输入的每个类别来填充自己。
因此,我需要一个查询来查找所有BlogPosts
带有 a 的内容User ID
,然后将他们输入的每个类别的列表进行四舍五入。同一类别将存在于多个记录中,但我当然只想为选择菜单返回它的副本。
谢谢 :)
您可以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
这既是 a 上的方法,Relation
又是Array
. 确保在将其转换为数组之前在关系上调用它,否则您将对一组不明确的结果执行 uniq,这也有效,但在性能方面是荒谬的。