Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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
Mongodb 当使用Desive current_用户变量时,Mongoid是否加载整个用户对象?_Mongodb_Devise_Mongoid - Fatal编程技术网

Mongodb 当使用Desive current_用户变量时,Mongoid是否加载整个用户对象?

Mongodb 当使用Desive current_用户变量时,Mongoid是否加载整个用户对象?,mongodb,devise,mongoid,Mongodb,Devise,Mongoid,我已经嵌入了一个用户的所有活动,假设大多数用户都有成千上万个与之相关的活动。在我的控制器代码中检查当前用户时,Mongoid是否加载包含所有嵌入活动记录的整个用户对象?我的直觉告诉我没有,但我真的很想证实这一点,这样我晚上就能睡得更好。:)谢谢大家! 下面是用户类的简短版本 class User include Mongoid::Document embeds_many :activities end 编辑 让我澄清一下为什么我特别感兴趣的是在使用当前用户时是否加载了整个对象。由于活

我已经嵌入了一个用户的所有活动,假设大多数用户都有成千上万个与之相关的活动。在我的控制器代码中检查当前用户时,Mongoid是否加载包含所有嵌入活动记录的整个用户对象?我的直觉告诉我没有,但我真的很想证实这一点,这样我晚上就能睡得更好。:)谢谢大家!

下面是用户类的简短版本

class User
  include Mongoid::Document
  embeds_many :activities
end

编辑


让我澄清一下为什么我特别感兴趣的是在使用当前用户时是否加载了整个对象。由于活动嵌入到用户文档中,并且大多数用户都有数千条记录,如果我只想检查用户是否登录,那么每次满载都会很昂贵

是的。Desive在验证时请求整个模型,因此如果您调用
当前用户.activities
,Mongoid将允许您访问
活动。Desive在进行身份验证时请求整个模型,因此如果您调用
当前用户,Mongoid将允许您访问
活动
。活动

,但在视图中,有时我只想检查用户是否登录,以便根据用户是否登录显示不同的模块。如果支票中嵌入了大量数据,那么支票的成本似乎非常高。我应该链接这些活动而不是嵌入它们吗?问题主要是,虽然你没有错,但修复它意味着要修补Desive的多个区域来解决它。您可以查看Mongoid中的default scope选项,并了解默认情况下排除
活动的情况,这意味着无需对Desive中的几个区域进行修补即可获得所需的内容。或者,您可以通过
数据库\u authenticable
模块查找monkey补丁点。但在视图中,有时我只想检查用户是否登录,以便根据用户是否登录显示不同的模块。如果支票中嵌入了大量数据,那么支票的成本似乎非常高。我应该链接这些活动而不是嵌入它们吗?问题主要是,虽然你没有错,但修复它意味着要修补Desive的多个区域来解决它。您可以查看Mongoid中的default scope选项,并了解默认情况下排除
活动的情况,这意味着无需对Desive中的几个区域进行修补即可获得所需的内容。或者,您可以通过
数据库_authenticable
模块查找猴子补丁点。