Ruby on rails Rails-如何执行此查询?每一张唱片拿一张
我有一个带有Ruby on rails Rails-如何执行此查询?每一张唱片拿一张,ruby-on-rails,postgresql,rails-activerecord,Ruby On Rails,Postgresql,Rails Activerecord,我有一个带有:category属性的BlogPost模型。我正在制作一个新的BlogPost表单,我想让选择菜单用用户在以前记录中输入的每个类别填充自己 因此,我需要一个查询来查找所有具有用户ID的博客帖子,然后汇总他们输入的每个类别的列表。同一类别将存在于多个记录中,但我当然只想在选择菜单中返回它的副本 谢谢:)您可以选择不同的类别,并将内部联接返回给正确的用户: Category .joins( :posts ) .where( posts: { user_id: current_u
:category
属性的BlogPost
模型。我正在制作一个新的BlogPost
表单,我想让选择菜单用用户在以前记录中输入的每个类别填充自己
因此,我需要一个查询来查找所有具有用户ID的博客帖子
,然后汇总他们输入的每个类别的列表。同一类别将存在于多个记录中,但我当然只想在选择菜单中返回它的副本
谢谢:)您可以选择不同的
类别,并将内部联接
返回给正确的用户:
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
既是关系上的方法,也是数组上的方法。在将其强制转换为数组之前,请确保在关系上调用它,否则您将在非不同结果的数组上执行uniq,这也很有效,但在性能方面是荒谬的。修剪第二个连接到用户,这是不需要的。