mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added a differenciation between AssociationCollection#size and -length. Now AssociationCollection#size returns the size of the collection by executing a SELECT COUNT(*) query if the collection hasn't been loaded and calling collection.size if it has. If it's more likely than not that the collection does have a size larger than zero and you need to fetch that collection afterwards, it'll take one less SELECT query if you use length.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@392 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
45ea2bd452
commit
fe8fb574c0
2 changed files with 15 additions and 1 deletions
|
@ -1,5 +1,10 @@
|
|||
*SVN*
|
||||
|
||||
* Added a differenciation between AssociationCollection#size and -length. Now AssociationCollection#size returns the size of the
|
||||
collection by executing a SELECT COUNT(*) query if the collection hasn't been loaded and calling collection.size if it has. If
|
||||
it's more likely than not that the collection does have a size larger than zero and you need to fetch that collection afterwards,
|
||||
it'll take one less SELECT query if you use length.
|
||||
|
||||
* Added Base#attributes that returns a hash of all the attributes with their names as keys and clones of their objects as values #433 [atyp.de]
|
||||
|
||||
* Fixed that foreign keys named the same as the association would cause stack overflow #437 [Eric Anderson]
|
||||
|
|
|
@ -70,12 +70,21 @@ module ActiveRecord
|
|||
@collection = []
|
||||
end
|
||||
|
||||
# Returns the size of the collection by executing a SELECT COUNT(*) query if the collection hasn't been loaded and
|
||||
# calling collection.size if it has. If it's more likely than not that the collection does have a size larger than zero
|
||||
# and you need to fetch that collection afterwards, it'll take one less SELECT query if you use length.
|
||||
def size
|
||||
if loaded? then @collection.size else count_records end
|
||||
end
|
||||
|
||||
# Returns the size of the collection by loading it and calling size on the array. If you want to use this method to check
|
||||
# whether the collection is empty, use collection.length.zero? instead of collection.empty?
|
||||
def length
|
||||
load_collection.size
|
||||
end
|
||||
|
||||
def empty?
|
||||
size == 0
|
||||
size.zero?
|
||||
end
|
||||
|
||||
def uniq(collection = self)
|
||||
|
|
Loading…
Reference in a new issue