aboutsummaryrefslogtreecommitdiffstats
path: root/railties/doc/guides/source
diff options
context:
space:
mode:
Diffstat (limited to 'railties/doc/guides/source')
-rw-r--r--railties/doc/guides/source/finders.txt85
-rw-r--r--railties/doc/guides/source/images/icons/README (renamed from railties/doc/guides/source/icons/README)0
-rw-r--r--railties/doc/guides/source/images/icons/callouts/1.png (renamed from railties/doc/guides/source/icons/callouts/1.png)bin329 -> 329 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/10.png (renamed from railties/doc/guides/source/icons/callouts/10.png)bin361 -> 361 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/11.png (renamed from railties/doc/guides/source/icons/callouts/11.png)bin565 -> 565 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/12.png (renamed from railties/doc/guides/source/icons/callouts/12.png)bin617 -> 617 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/13.png (renamed from railties/doc/guides/source/icons/callouts/13.png)bin623 -> 623 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/14.png (renamed from railties/doc/guides/source/icons/callouts/14.png)bin411 -> 411 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/15.png (renamed from railties/doc/guides/source/icons/callouts/15.png)bin640 -> 640 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/2.png (renamed from railties/doc/guides/source/icons/callouts/2.png)bin353 -> 353 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/3.png (renamed from railties/doc/guides/source/icons/callouts/3.png)bin350 -> 350 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/4.png (renamed from railties/doc/guides/source/icons/callouts/4.png)bin345 -> 345 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/5.png (renamed from railties/doc/guides/source/icons/callouts/5.png)bin348 -> 348 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/6.png (renamed from railties/doc/guides/source/icons/callouts/6.png)bin355 -> 355 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/7.png (renamed from railties/doc/guides/source/icons/callouts/7.png)bin344 -> 344 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/8.png (renamed from railties/doc/guides/source/icons/callouts/8.png)bin357 -> 357 bytes
-rw-r--r--railties/doc/guides/source/images/icons/callouts/9.png (renamed from railties/doc/guides/source/icons/callouts/9.png)bin357 -> 357 bytes
-rw-r--r--railties/doc/guides/source/images/icons/caution.png (renamed from railties/doc/guides/source/icons/caution.png)bin2554 -> 2554 bytes
-rw-r--r--railties/doc/guides/source/images/icons/example.png (renamed from railties/doc/guides/source/icons/example.png)bin2354 -> 2354 bytes
-rw-r--r--railties/doc/guides/source/images/icons/home.png (renamed from railties/doc/guides/source/icons/home.png)bin1340 -> 1340 bytes
-rw-r--r--railties/doc/guides/source/images/icons/important.png (renamed from railties/doc/guides/source/icons/important.png)bin2657 -> 2657 bytes
-rw-r--r--railties/doc/guides/source/images/icons/next.png (renamed from railties/doc/guides/source/icons/next.png)bin1302 -> 1302 bytes
-rw-r--r--railties/doc/guides/source/images/icons/note.png (renamed from railties/doc/guides/source/icons/note.png)bin2730 -> 2730 bytes
-rw-r--r--railties/doc/guides/source/images/icons/prev.png (renamed from railties/doc/guides/source/icons/prev.png)bin1348 -> 1348 bytes
-rw-r--r--railties/doc/guides/source/images/icons/tip.png (renamed from railties/doc/guides/source/icons/tip.png)bin2602 -> 2602 bytes
-rw-r--r--railties/doc/guides/source/images/icons/up.png (renamed from railties/doc/guides/source/icons/up.png)bin1320 -> 1320 bytes
-rw-r--r--railties/doc/guides/source/images/icons/warning.png (renamed from railties/doc/guides/source/icons/warning.png)bin2828 -> 2828 bytes
27 files changed, 76 insertions, 9 deletions
diff --git a/railties/doc/guides/source/finders.txt b/railties/doc/guides/source/finders.txt
index e81fa23e3a..a86191aaf4 100644
--- a/railties/doc/guides/source/finders.txt
+++ b/railties/doc/guides/source/finders.txt
@@ -183,7 +183,17 @@ SELECT * FROM clients LIMIT 5, 5
== Group
-TODO
+The group option for find is useful, for example, if you want to find a collection of the dates orders were created on. We could use the option in this context:
+
+[source, ruby]
+Order.find(:all, :group => "date(created_at)", :order => "created_at")
+
+And this will give us a single Order object for each date that we have orders in our database.
+
+The SQL that would be executed would be something like this:
+
+[source, sql]
+SELECT * FROM `orders` GROUP BY date(created_at)
== Read Only
@@ -203,7 +213,7 @@ client.save
If you're wanting to stop race conditions for a specific record, say for example you're incrementing a single field for a record you can use the lock option to ensure that the record is updated correctly. It's recommended this be used inside a transaction.
-[source, Ruby]
+[source, ruby]
Topic.transaction do
t = Topic.find(params[:id], :lock => true)
t.increment!(:views)
@@ -233,7 +243,7 @@ This query is more efficent, but there's a gotcha. If you have a client who does
When using eager loading you can specify conditions for the columns of the tables inside the eager loading to get back a smaller subset. If, for example, you want to find a client and all their orders within the last two weeks you could use eager loading with conditions for this:
-[source, Ruby]
+[source, ruby]
Client.find(:first, :include => "orders", :conditions => ["orders.created_at >= ? AND orders.created_at <= ?", Time.now - 2.weeks, Time.now])
@@ -368,22 +378,76 @@ Client.exists?(:conditions => "first_name = 'Ryan'")
== Calculations
-=== Count
-
-If you want to see how many records are in your models 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)`.
+This section uses count as an example method in this preamble, but the options described apply to all sub-sections.
`count` takes conditions much in the same way `exists?` does:
[source, ruby]
Client.count(:conditions => "first_name = 'Ryan'")
+Which will execute:
+
[source, sql]
SELECT count(*) AS count_all FROM `clients` WHERE (first_name = 1)
-== With Scope
+You can also use `include` or `joins` for this to do something a little more complex:
+
+[source, ruby]
+Client.count(:conditions => "clients.first_name = 'Ryan' AND orders.status = 'received'", :include => "orders")
+
+Which will execute:
+
+[source, sql]
+SELECT count(DISTINCT `clients`.id) AS count_all FROM `clients` LEFT OUTER JOIN `orders` ON orders.client_id = client.id WHERE (clients.first_name = 'name' AND orders.status = 'received')
+
+We specify `clients.first_name` just in case one of our join tables has a field also called `first_name` and we do `orders.status` because that's the name of our join table.
+
+
+=== 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)`.
+
+For options, please see the parent section, Calculations.
+
+=== Average
+
+If you want to see the average of a certain number in one of your tables you can call the `average` method on the class that relates to the table. This method call will look something like this:
+
+[source, ruby]
+Client.average("orders_count")
+
+This will return a number (possibly a floating point number such as 3.14159265) representing the average of the fields.
+
+For options, please see the parent section, <<_calculations, Calculations>>
+
+=== Minimum
+
+If you want to find the minimum value of a field in your table you can call the `minimum` method on the class that relates to the table. This method call will look something like this:
+
+[source, ruby]
+Client.minimum("age")
+
+For options, please see the parent section, <<_calculations, Calculations>>
+
+=== Maximum
+
+If you want to find the maximum value of a field in your table you can call the `maximum` method on the class that relates to the table. This method call will look something like this:
+
+[source, ruby]
+Client.maximum("age")
+
+For options, please see the parent section, <<_calculations, Calculations>>
+
+
+=== Sum
+
+If you want to find the sum of a field for all records in your table you can call the `sum` method on the class that relates to the table. This method call will look something like this:
+
+[source, ruby]
+Client.sum("orders_count")
+
+For options, please see the parent section, <<_calculations, Calculations>>
-TODO
-
== Credits
Thanks to Ryan Bates for his awesome screencast on named scope #108. The information within the named scope section is intentionally similar to it, and without the cast may have not been possible.
@@ -419,3 +483,6 @@ Thanks to Mike Gunderloy for his tips on creating this guide.
=== Tuesday, 21 October 2008
1. Extended named scope guide by adding :include and :joins and find sub-sections.
+
+=== Wednesday, 22 October 2008
+1. Completed calculations section.
diff --git a/railties/doc/guides/source/icons/README b/railties/doc/guides/source/images/icons/README
index f12b2a730c..f12b2a730c 100644
--- a/railties/doc/guides/source/icons/README
+++ b/railties/doc/guides/source/images/icons/README
diff --git a/railties/doc/guides/source/icons/callouts/1.png b/railties/doc/guides/source/images/icons/callouts/1.png
index 7d473430b7..7d473430b7 100644
--- a/railties/doc/guides/source/icons/callouts/1.png
+++ b/railties/doc/guides/source/images/icons/callouts/1.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/10.png b/railties/doc/guides/source/images/icons/callouts/10.png
index 997bbc8246..997bbc8246 100644
--- a/railties/doc/guides/source/icons/callouts/10.png
+++ b/railties/doc/guides/source/images/icons/callouts/10.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/11.png b/railties/doc/guides/source/images/icons/callouts/11.png
index ce47dac3f5..ce47dac3f5 100644
--- a/railties/doc/guides/source/icons/callouts/11.png
+++ b/railties/doc/guides/source/images/icons/callouts/11.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/12.png b/railties/doc/guides/source/images/icons/callouts/12.png
index 31daf4e2f2..31daf4e2f2 100644
--- a/railties/doc/guides/source/icons/callouts/12.png
+++ b/railties/doc/guides/source/images/icons/callouts/12.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/13.png b/railties/doc/guides/source/images/icons/callouts/13.png
index 14021a89c2..14021a89c2 100644
--- a/railties/doc/guides/source/icons/callouts/13.png
+++ b/railties/doc/guides/source/images/icons/callouts/13.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/14.png b/railties/doc/guides/source/images/icons/callouts/14.png
index 64014b75fe..64014b75fe 100644
--- a/railties/doc/guides/source/icons/callouts/14.png
+++ b/railties/doc/guides/source/images/icons/callouts/14.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/15.png b/railties/doc/guides/source/images/icons/callouts/15.png
index 0d65765fcf..0d65765fcf 100644
--- a/railties/doc/guides/source/icons/callouts/15.png
+++ b/railties/doc/guides/source/images/icons/callouts/15.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/2.png b/railties/doc/guides/source/images/icons/callouts/2.png
index 5d09341b2f..5d09341b2f 100644
--- a/railties/doc/guides/source/icons/callouts/2.png
+++ b/railties/doc/guides/source/images/icons/callouts/2.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/3.png b/railties/doc/guides/source/images/icons/callouts/3.png
index ef7b700471..ef7b700471 100644
--- a/railties/doc/guides/source/icons/callouts/3.png
+++ b/railties/doc/guides/source/images/icons/callouts/3.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/4.png b/railties/doc/guides/source/images/icons/callouts/4.png
index adb8364eb5..adb8364eb5 100644
--- a/railties/doc/guides/source/icons/callouts/4.png
+++ b/railties/doc/guides/source/images/icons/callouts/4.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/5.png b/railties/doc/guides/source/images/icons/callouts/5.png
index 4d7eb46002..4d7eb46002 100644
--- a/railties/doc/guides/source/icons/callouts/5.png
+++ b/railties/doc/guides/source/images/icons/callouts/5.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/6.png b/railties/doc/guides/source/images/icons/callouts/6.png
index 0ba694af6c..0ba694af6c 100644
--- a/railties/doc/guides/source/icons/callouts/6.png
+++ b/railties/doc/guides/source/images/icons/callouts/6.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/7.png b/railties/doc/guides/source/images/icons/callouts/7.png
index 472e96f8ac..472e96f8ac 100644
--- a/railties/doc/guides/source/icons/callouts/7.png
+++ b/railties/doc/guides/source/images/icons/callouts/7.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/8.png b/railties/doc/guides/source/images/icons/callouts/8.png
index 5e60973c21..5e60973c21 100644
--- a/railties/doc/guides/source/icons/callouts/8.png
+++ b/railties/doc/guides/source/images/icons/callouts/8.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/callouts/9.png b/railties/doc/guides/source/images/icons/callouts/9.png
index a0676d26cc..a0676d26cc 100644
--- a/railties/doc/guides/source/icons/callouts/9.png
+++ b/railties/doc/guides/source/images/icons/callouts/9.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/caution.png b/railties/doc/guides/source/images/icons/caution.png
index cb9d5ea0df..cb9d5ea0df 100644
--- a/railties/doc/guides/source/icons/caution.png
+++ b/railties/doc/guides/source/images/icons/caution.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/example.png b/railties/doc/guides/source/images/icons/example.png
index bba1c0010d..bba1c0010d 100644
--- a/railties/doc/guides/source/icons/example.png
+++ b/railties/doc/guides/source/images/icons/example.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/home.png b/railties/doc/guides/source/images/icons/home.png
index 37a5231bac..37a5231bac 100644
--- a/railties/doc/guides/source/icons/home.png
+++ b/railties/doc/guides/source/images/icons/home.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/important.png b/railties/doc/guides/source/images/icons/important.png
index 1096c23295..1096c23295 100644
--- a/railties/doc/guides/source/icons/important.png
+++ b/railties/doc/guides/source/images/icons/important.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/next.png b/railties/doc/guides/source/images/icons/next.png
index 64e126bdda..64e126bdda 100644
--- a/railties/doc/guides/source/icons/next.png
+++ b/railties/doc/guides/source/images/icons/next.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/note.png b/railties/doc/guides/source/images/icons/note.png
index 841820f7c4..841820f7c4 100644
--- a/railties/doc/guides/source/icons/note.png
+++ b/railties/doc/guides/source/images/icons/note.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/prev.png b/railties/doc/guides/source/images/icons/prev.png
index 3e8f12fe24..3e8f12fe24 100644
--- a/railties/doc/guides/source/icons/prev.png
+++ b/railties/doc/guides/source/images/icons/prev.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/tip.png b/railties/doc/guides/source/images/icons/tip.png
index a3a029d898..a3a029d898 100644
--- a/railties/doc/guides/source/icons/tip.png
+++ b/railties/doc/guides/source/images/icons/tip.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/up.png b/railties/doc/guides/source/images/icons/up.png
index 2db1ce62fa..2db1ce62fa 100644
--- a/railties/doc/guides/source/icons/up.png
+++ b/railties/doc/guides/source/images/icons/up.png
Binary files differ
diff --git a/railties/doc/guides/source/icons/warning.png b/railties/doc/guides/source/images/icons/warning.png
index 0b0c419df2..0b0c419df2 100644
--- a/railties/doc/guides/source/icons/warning.png
+++ b/railties/doc/guides/source/images/icons/warning.png
Binary files differ