Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 - Fatal编程技术网

Ruby on rails 在Rails中显示没有帖子的用户

Ruby on rails 在Rails中显示没有帖子的用户,ruby-on-rails,Ruby On Rails,我将如何查询尚未撰写任何帖子的用户? 这就是我正在尝试的: u = User.joins(:posts).where('posts.size = ?', 0) 输出: PG::UndefinedColumn: ERROR: column posts.size does not exist 我正试图了解正确的SQL语法,但到目前为止运气不好您必须在没有连接的情况下执行此操作,如下所示: User.where(Post.where("posts.user_id = users.id").ex

我将如何查询尚未撰写任何帖子的用户? 这就是我正在尝试的:

u = User.joins(:posts).where('posts.size = ?', 0)
输出:

PG::UndefinedColumn: ERROR:  column posts.size does not exist
我正试图了解正确的SQL语法,但到目前为止运气不好

您必须在没有连接的情况下执行此操作,如下所示:

 User.where(Post.where("posts.user_id = users.id").exists.not)
它对于链条件(例如应用不同的过滤器)非常有用


创建类似SQL的:

SELECT "users".* FROM "users"  
WHERE (
  NOT (
    EXISTS (SELECT "posts".* FROM "posts"  WHERE (posts.user_id = users.id))
  )
)
您必须在没有联接的情况下执行此操作,如下所示:

 User.where(Post.where("posts.user_id = users.id").exists.not)
它对于链条件(例如应用不同的过滤器)非常有用


创建类似SQL的:

SELECT "users".* FROM "users"  
WHERE (
  NOT (
    EXISTS (SELECT "posts".* FROM "posts"  WHERE (posts.user_id = users.id))
  )
)

它创建了一个
EXIST
子查询,这是一个有效的sql(而且非常方便:)。这不会产生两个单独的sql请求吗?有没有办法用一个来做呢?@GeorgeMillo它只做一个,检查生成的sqlit创建了一个
EXIST
子查询,这是有效的sql(而且非常方便:)。这不会产生两个单独的sql请求吗?有没有办法用一个来做呢?@GeorgeMillo它只做一个,检查生成的sql