Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-如何执行此查询?每一张唱片拿一张_Ruby On Rails_Postgresql_Rails Activerecord - Fatal编程技术网

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

修剪第二个
连接到用户,这是不需要的。