Method: ActiveRecord::Scoping::Named::ClassMethods#all

Defined in:
activerecord/lib/active_record/scoping/named.rb

#all(all_queries: nil) ⇒ Object

Returns an ActiveRecord::Relation scope object.

posts = Post.all
posts.size # Fires "select count(*) from  posts" and returns the count
posts.each {|p| puts p.name } # Fires "select * from posts" and loads post objects

fruits = Fruit.all
fruits = fruits.where(color: 'red') if options[:red_only]
fruits = fruits.limit(10) if limited?

You can define a scope that applies to all finders using default_scope.



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'activerecord/lib/active_record/scoping/named.rb', line 22

def all(all_queries: nil)
  scope = current_scope

  if scope
    if self == scope.model
      scope.clone
    else
      relation.merge!(scope)
    end
  else
    default_scoped(all_queries: all_queries)
  end
end