Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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_Ruby_Postgresql_Activerecord - Fatal编程技术网

Ruby on rails 查询上有多个关系工作的Rails不正确?

Ruby on rails 查询上有多个关系工作的Rails不正确?,ruby-on-rails,ruby,postgresql,activerecord,Ruby On Rails,Ruby,Postgresql,Activerecord,干杯! 假设我有用户,其中有许多帐户,帐户模型有登录(布尔)字段 我写了一个AR查询: User.joins(:accounts).where(accounts:{logged\u in:false}),对吗 然后我检查它User.joins(:accounts).where(accounts:{logged\u-in:false}).first.accounts.pull(:logged\u-in) 并且可以看到有一些帐户具有mobiles.logged_in=true值 (0.1ms) S

干杯! 假设我有
用户
,其中
有许多
帐户
帐户
模型有
登录(布尔)
字段

我写了一个AR查询:
User.joins(:accounts).where(accounts:{logged\u in:false})
,对吗

然后我检查它
User.joins(:accounts).where(accounts:{logged\u-in:false}).first.accounts.pull(:logged\u-in)
并且可以看到有一些帐户具有
mobiles.logged_in=true

(0.1ms)  SELECT "accounts"."logged_in" FROM "accounts" WHERE "accounts"."user_id" = $1  [["user_id", 373]]
false
false
true
为什么?

获取所有至少有一个帐户的用户,该帐户的
登录=false

这是因为它被翻译成(大致):


问题是当你这么做的时候

User.joins(:accounts).where(accounts: { logged_in: false }).first.accounts
实际上,您正在为找到的第一个用户(无论是否登录)重新获取所有帐户。

此用户至少有一个
未登录
帐户,但不一定全部。

手机
不同于
帐户
,对吗?@ollpu对不起,我指的是
帐户
,这不是错误的来源problem@Nikita-它工作得很好。试着想想。当您根据相同的条件查找用户时,为什么您希望该用户只登录了错误的帐户。它只是一个
user
对象
user.joins(:accounts).where(accounts:{logged\u in:false})。首先到这里。然后对其调用
accounts
,将返回与其关联的所有
帐户。
SELECT users.*
FROM users
INNER JOIN accounts
WHERE users.id = accounts.user_id
  AND NOT accounts.logged_in
User.joins(:accounts).where(accounts: { logged_in: false }).first.accounts