| Class | WillPaginate::NamedScope::Scope |
| In: |
lib/will_paginate/named_scope.rb
|
| Parent: | Object |
| proxy_options | [R] | |
| proxy_scope | [R] |
# File lib/will_paginate/named_scope.rb, line 115
115: def initialize(proxy_scope, options)
116: [options[:extend]].flatten.each { |extension| extend extension } if options[:extend]
117: extend Module.new { |*args| yield(*args) } if block_given?
118: @proxy_scope, @proxy_options = proxy_scope, options.except(:extend)
119: end
# File lib/will_paginate/named_scope.rb, line 141
141: def empty?
142: @found ? @found.empty? : count.zero?
143: end
# File lib/will_paginate/named_scope.rb, line 125
125: def first(*args)
126: if args.first.kind_of?(Integer) || (@found && !args.first.kind_of?(Hash))
127: proxy_found.first(*args)
128: else
129: find(:first, *args)
130: end
131: end
# File lib/will_paginate/named_scope.rb, line 133
133: def last(*args)
134: if args.first.kind_of?(Integer) || (@found && !args.first.kind_of?(Hash))
135: proxy_found.last(*args)
136: else
137: find(:last, *args)
138: end
139: end
# File lib/will_paginate/named_scope.rb, line 145
145: def respond_to?(method, include_private = false)
146: super || @proxy_scope.respond_to?(method, include_private)
147: end
# File lib/will_paginate/named_scope.rb, line 150
150: def proxy_found
151: @found || load_found
152: end
# File lib/will_paginate/named_scope.rb, line 165
165: def load_found
166: @found = find(:all)
167: end
# File lib/will_paginate/named_scope.rb, line 155
155: def method_missing(method, *args)
156: if scopes.include?(method)
157: scopes[method].call(self, *args)
158: else
159: with_scope :find => proxy_options do
160: proxy_scope.send(method, *args) { |*a| yield(*a) if block_given? }
161: end
162: end
163: end