2011-02-20 13:04:18 +09:00
|
|
|
module Kaminari
|
|
|
|
module MongoidCriteriaMethods
|
2014-06-23 12:12:02 -07:00
|
|
|
def initialize_copy(other) #:nodoc:
|
|
|
|
@total_count = nil
|
|
|
|
super
|
|
|
|
end
|
|
|
|
|
2014-03-16 11:19:20 -07:00
|
|
|
def entry_name
|
|
|
|
model_name.human.downcase
|
|
|
|
end
|
|
|
|
|
2011-12-12 00:14:52 +09:00
|
|
|
def limit_value #:nodoc:
|
|
|
|
options[:limit]
|
|
|
|
end
|
2011-02-21 04:01:07 +09:00
|
|
|
|
2011-12-12 00:14:52 +09:00
|
|
|
def offset_value #:nodoc:
|
|
|
|
options[:skip]
|
|
|
|
end
|
2011-02-21 04:01:07 +09:00
|
|
|
|
2011-12-12 00:14:52 +09:00
|
|
|
def total_count #:nodoc:
|
2014-03-19 19:16:54 -07:00
|
|
|
@total_count ||= if embedded?
|
2014-08-13 20:01:19 -07:00
|
|
|
unpage.size
|
2014-03-19 19:16:54 -07:00
|
|
|
else
|
2014-08-13 20:01:19 -07:00
|
|
|
if options[:max_scan] && options[:max_scan] < size
|
2014-03-19 19:16:54 -07:00
|
|
|
options[:max_scan]
|
2013-12-12 10:53:14 +08:00
|
|
|
else
|
2014-08-13 20:01:19 -07:00
|
|
|
size
|
2013-12-12 10:53:14 +08:00
|
|
|
end
|
2014-03-19 19:16:54 -07:00
|
|
|
end
|
2011-12-12 00:14:52 +09:00
|
|
|
end
|
2012-05-14 23:45:33 +08:00
|
|
|
|
2011-12-12 00:14:52 +09:00
|
|
|
private
|
|
|
|
def unpage
|
|
|
|
clone.tap do |crit|
|
|
|
|
crit.options.delete :limit
|
|
|
|
crit.options.delete :skip
|
2011-02-20 13:04:18 +09:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|