aboutsummaryrefslogtreecommitdiffstats
path: root/railties/guides/source
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2010-08-30 23:44:51 +0100
committerPratik Naik <pratiknaik@gmail.com>2010-08-30 23:45:03 +0100
commit9cd708b2cf39219bff3ebcda1e4428403a88a02d (patch)
treee6b3cd8ea31396954b58c04ea69f41491ca95365 /railties/guides/source
parentd0720ad5f8c49fdca103babf5f3d9df1aaae3af2 (diff)
downloadrails-9cd708b2cf39219bff3ebcda1e4428403a88a02d.tar.gz
rails-9cd708b2cf39219bff3ebcda1e4428403a88a02d.tar.bz2
rails-9cd708b2cf39219bff3ebcda1e4428403a88a02d.zip
Reword calculations section
Diffstat (limited to 'railties/guides/source')
-rw-r--r--railties/guides/source/active_record_querying.textile20
1 files changed, 10 insertions, 10 deletions
diff --git a/railties/guides/source/active_record_querying.textile b/railties/guides/source/active_record_querying.textile
index 2451773990..b34e2ffc03 100644
--- a/railties/guides/source/active_record_querying.textile
+++ b/railties/guides/source/active_record_querying.textile
@@ -856,22 +856,24 @@ h3. Calculations
This section uses count as an example method in this preamble, but the options described apply to all sub-sections.
-<tt>count</tt> takes conditions much in the same way +exists?+ does:
+All calculation methods work directly on a model:
<ruby>
-Client.count(:conditions => "first_name = 'Ryan'")
+Client.count
+# SELECT count(*) AS count_all FROM clients
</ruby>
-Which will execute:
+Or on a relation :
-<sql>
-SELECT count(*) AS count_all FROM clients WHERE (first_name = 'Ryan')
-</sql>
+<ruby>
+Client.where(:first_name => 'Ryan').count
+# SELECT count(*) AS count_all FROM clients WHERE (first_name = 'Ryan')
+</ruby>
-You can also use the +includes+ or +joins+ methods for this to do something a little more complex:
+You can also use various finder methods on a relation for performing complex calculations:
<ruby>
-Client.where("clients.first_name = 'Ryan' AND orders.status = 'received'").includes("orders").count
+Client.includes("orders").where(:first_name => 'Ryan', :orders => {:status => 'received'}).count
</ruby>
Which will execute:
@@ -882,8 +884,6 @@ SELECT count(DISTINCT clients.id) AS count_all FROM clients
(clients.first_name = 'Ryan' AND orders.status = 'received')
</sql>
-This code specifies +clients.first_name+ just in case one of the join tables has a field also called +first_name+ and it uses +orders.status+ because that's the name of our join table.
-
h4. Count
If you want to see how many records are in your model's table you could call +Client.count+ and that will return the number. If you want to be more specific and find all the clients with their age present in the database you can use +Client.count(:age)+.