5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/fast_page/active_record_methods.rb', line 5
def deferred_join_load
raise ArgumentError, "You must specify a limit or offset to use fast_page" if !limit_value && !offset_value
@values[:limit] = limit_value + 1 if limit_value
id_scope = dup
id_scope = id_scope.except(:includes) unless references_eager_loaded_tables?
ids = if order_references_select_aliases?
id_scope.select(primary_key).map { |record| record.send(primary_key) }
else
id_scope.pluck(primary_key)
end
if limit_value
@values[:limit] = limit_value - 1
@_has_next = ids.length > limit_value
ids = ids.first(limit_value)
end
if ids.empty?
@records = []
@loaded = true
return self
end
@records = where(primary_key => ids).unscope(:limit).unscope(:offset).load.records
@loaded = true
self
end
|