其实 Mongoid 的 empty? 方法和 Ruby 中的 empty?是不一样的,首先给大家看一下 Mongoid 的 empty? 源代码 https://github.com/mongoid/mongoid/blob/master/lib/mongoid/finders.rb
# File 'lib/mongoid/finders.rb', line 51
def empty?
count == 0
end
# File 'lib/mongoid/finders.rb', line 41
def count
with_default_scope.count
end
.....
需要大家一步一步找不知道的东西,比如'with_default_scope',开始完全不知道 TA 是个什么东西,在 google 搜了以下 with_default_scope,才知道是 Mongoid 的一个方法,其中你建的 Model 类就有这个方法,打开终端就看得见! 下面就是我今天主要想说的
# 我首先从数据库中读数据(数据库为空)
log = Log,where(content: "123456")
log.length => 0
log.empty? => true
现在我在数据库中插入一条数据
Log.create(content: "123456")
log.length => 0
log.empty? => false
所以问题就出现了,出现这种情况,个人认为是在调用 empty?时 with_default_scope 起作用了,再次查询了一次数据库! 不知道这样理解正确不?还请指教。