aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2008-08-19 02:51:37 +0200
committerXavier Noria <fxn@hashref.com>2008-08-19 02:51:37 +0200
commit2ee60b0f70febc8c28a90e8361d9e9c2b86d4833 (patch)
tree9e6075b3d3fc3131808415d689bb6bfff04e9a6b
parent48f56bf2beace63a20b0def4176274804e088c55 (diff)
downloadrails-2ee60b0f70febc8c28a90e8361d9e9c2b86d4833.tar.gz
rails-2ee60b0f70febc8c28a90e8361d9e9c2b86d4833.tar.bz2
rails-2ee60b0f70febc8c28a90e8361d9e9c2b86d4833.zip
added a class rdoc and documented count_records in has_many_association.rb
-rw-r--r--activerecord/lib/active_record/associations/has_many_association.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb
index e6fa15c173..f06e69aba3 100644
--- a/activerecord/lib/active_record/associations/has_many_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_association.rb
@@ -1,5 +1,9 @@
module ActiveRecord
module Associations
+ # This is the proxy that handles a has many association.
+ #
+ # If the association has a <tt>:through</tt> option further specialization
+ # is provided by its child HasManyThroughAssociation.
class HasManyAssociation < AssociationCollection #:nodoc:
# Count the number of associated records. All arguments are optional.
def count(*args)
@@ -27,6 +31,16 @@ module ActiveRecord
end
end
+ # Returns the number of records in this collection.
+ #
+ # If the association has a counter cache it gets that value. Otherwise
+ # a count via SQL is performed, bounded to <tt>:limit</tt> if there's one.
+ # That does not depend on whether the collection has already been loaded
+ # or not. The +size+ method is the one that takes the loaded flag into
+ # account and delegates to +count_records+ if needed.
+ #
+ # If the collection is empty the target is set to an empty array and
+ # the loaded flag is set to true as well.
def count_records
count = if has_cached_counter?
@owner.send(:read_attribute, cached_counter_attribute_name)