1

我有一个BlogPost带有:category属性的模型。我正在制作一个新BlogPost表单,我希望选择菜单能够使用用户在以前的记录中输入的每个类别来填充自己。

因此,我需要一个查询来查找所有BlogPosts带有 a 的内容User ID,然后将他们输入的每个类别的列表进行四舍五入。同一类别将存在于多个记录中,但我当然只想为选择菜单返回它的副本。

谢谢 :)

4

1 回答 1

3

您可以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,这也有效,但在性能方面是荒谬的。

于 2013-01-26T20:10:16.390 回答