diff options
Diffstat (limited to 'railties/doc/guides/source')
-rw-r--r-- | railties/doc/guides/source/finders.txt | 85 | ||||
-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) | bin | 329 -> 329 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/10.png (renamed from railties/doc/guides/source/icons/callouts/10.png) | bin | 361 -> 361 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/11.png (renamed from railties/doc/guides/source/icons/callouts/11.png) | bin | 565 -> 565 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/12.png (renamed from railties/doc/guides/source/icons/callouts/12.png) | bin | 617 -> 617 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/13.png (renamed from railties/doc/guides/source/icons/callouts/13.png) | bin | 623 -> 623 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/14.png (renamed from railties/doc/guides/source/icons/callouts/14.png) | bin | 411 -> 411 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/15.png (renamed from railties/doc/guides/source/icons/callouts/15.png) | bin | 640 -> 640 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/2.png (renamed from railties/doc/guides/source/icons/callouts/2.png) | bin | 353 -> 353 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/3.png (renamed from railties/doc/guides/source/icons/callouts/3.png) | bin | 350 -> 350 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/4.png (renamed from railties/doc/guides/source/icons/callouts/4.png) | bin | 345 -> 345 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/5.png (renamed from railties/doc/guides/source/icons/callouts/5.png) | bin | 348 -> 348 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/6.png (renamed from railties/doc/guides/source/icons/callouts/6.png) | bin | 355 -> 355 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/7.png (renamed from railties/doc/guides/source/icons/callouts/7.png) | bin | 344 -> 344 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/8.png (renamed from railties/doc/guides/source/icons/callouts/8.png) | bin | 357 -> 357 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/callouts/9.png (renamed from railties/doc/guides/source/icons/callouts/9.png) | bin | 357 -> 357 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/caution.png (renamed from railties/doc/guides/source/icons/caution.png) | bin | 2554 -> 2554 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/example.png (renamed from railties/doc/guides/source/icons/example.png) | bin | 2354 -> 2354 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/home.png (renamed from railties/doc/guides/source/icons/home.png) | bin | 1340 -> 1340 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/important.png (renamed from railties/doc/guides/source/icons/important.png) | bin | 2657 -> 2657 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/next.png (renamed from railties/doc/guides/source/icons/next.png) | bin | 1302 -> 1302 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/note.png (renamed from railties/doc/guides/source/icons/note.png) | bin | 2730 -> 2730 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/prev.png (renamed from railties/doc/guides/source/icons/prev.png) | bin | 1348 -> 1348 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/tip.png (renamed from railties/doc/guides/source/icons/tip.png) | bin | 2602 -> 2602 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/up.png (renamed from railties/doc/guides/source/icons/up.png) | bin | 1320 -> 1320 bytes | |||
-rw-r--r-- | railties/doc/guides/source/images/icons/warning.png (renamed from railties/doc/guides/source/icons/warning.png) | bin | 2828 -> 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 Binary files differindex 7d473430b7..7d473430b7 100644 --- a/railties/doc/guides/source/icons/callouts/1.png +++ b/railties/doc/guides/source/images/icons/callouts/1.png diff --git a/railties/doc/guides/source/icons/callouts/10.png b/railties/doc/guides/source/images/icons/callouts/10.png Binary files differindex 997bbc8246..997bbc8246 100644 --- a/railties/doc/guides/source/icons/callouts/10.png +++ b/railties/doc/guides/source/images/icons/callouts/10.png diff --git a/railties/doc/guides/source/icons/callouts/11.png b/railties/doc/guides/source/images/icons/callouts/11.png Binary files differindex ce47dac3f5..ce47dac3f5 100644 --- a/railties/doc/guides/source/icons/callouts/11.png +++ b/railties/doc/guides/source/images/icons/callouts/11.png diff --git a/railties/doc/guides/source/icons/callouts/12.png b/railties/doc/guides/source/images/icons/callouts/12.png Binary files differindex 31daf4e2f2..31daf4e2f2 100644 --- a/railties/doc/guides/source/icons/callouts/12.png +++ b/railties/doc/guides/source/images/icons/callouts/12.png diff --git a/railties/doc/guides/source/icons/callouts/13.png b/railties/doc/guides/source/images/icons/callouts/13.png Binary files differindex 14021a89c2..14021a89c2 100644 --- a/railties/doc/guides/source/icons/callouts/13.png +++ b/railties/doc/guides/source/images/icons/callouts/13.png diff --git a/railties/doc/guides/source/icons/callouts/14.png b/railties/doc/guides/source/images/icons/callouts/14.png Binary files differindex 64014b75fe..64014b75fe 100644 --- a/railties/doc/guides/source/icons/callouts/14.png +++ b/railties/doc/guides/source/images/icons/callouts/14.png diff --git a/railties/doc/guides/source/icons/callouts/15.png b/railties/doc/guides/source/images/icons/callouts/15.png Binary files differindex 0d65765fcf..0d65765fcf 100644 --- a/railties/doc/guides/source/icons/callouts/15.png +++ b/railties/doc/guides/source/images/icons/callouts/15.png diff --git a/railties/doc/guides/source/icons/callouts/2.png b/railties/doc/guides/source/images/icons/callouts/2.png Binary files differindex 5d09341b2f..5d09341b2f 100644 --- a/railties/doc/guides/source/icons/callouts/2.png +++ b/railties/doc/guides/source/images/icons/callouts/2.png diff --git a/railties/doc/guides/source/icons/callouts/3.png b/railties/doc/guides/source/images/icons/callouts/3.png Binary files differindex ef7b700471..ef7b700471 100644 --- a/railties/doc/guides/source/icons/callouts/3.png +++ b/railties/doc/guides/source/images/icons/callouts/3.png diff --git a/railties/doc/guides/source/icons/callouts/4.png b/railties/doc/guides/source/images/icons/callouts/4.png Binary files differindex adb8364eb5..adb8364eb5 100644 --- a/railties/doc/guides/source/icons/callouts/4.png +++ b/railties/doc/guides/source/images/icons/callouts/4.png diff --git a/railties/doc/guides/source/icons/callouts/5.png b/railties/doc/guides/source/images/icons/callouts/5.png Binary files differindex 4d7eb46002..4d7eb46002 100644 --- a/railties/doc/guides/source/icons/callouts/5.png +++ b/railties/doc/guides/source/images/icons/callouts/5.png diff --git a/railties/doc/guides/source/icons/callouts/6.png b/railties/doc/guides/source/images/icons/callouts/6.png Binary files differindex 0ba694af6c..0ba694af6c 100644 --- a/railties/doc/guides/source/icons/callouts/6.png +++ b/railties/doc/guides/source/images/icons/callouts/6.png diff --git a/railties/doc/guides/source/icons/callouts/7.png b/railties/doc/guides/source/images/icons/callouts/7.png Binary files differindex 472e96f8ac..472e96f8ac 100644 --- a/railties/doc/guides/source/icons/callouts/7.png +++ b/railties/doc/guides/source/images/icons/callouts/7.png diff --git a/railties/doc/guides/source/icons/callouts/8.png b/railties/doc/guides/source/images/icons/callouts/8.png Binary files differindex 5e60973c21..5e60973c21 100644 --- a/railties/doc/guides/source/icons/callouts/8.png +++ b/railties/doc/guides/source/images/icons/callouts/8.png diff --git a/railties/doc/guides/source/icons/callouts/9.png b/railties/doc/guides/source/images/icons/callouts/9.png Binary files differindex a0676d26cc..a0676d26cc 100644 --- a/railties/doc/guides/source/icons/callouts/9.png +++ b/railties/doc/guides/source/images/icons/callouts/9.png diff --git a/railties/doc/guides/source/icons/caution.png b/railties/doc/guides/source/images/icons/caution.png Binary files differindex cb9d5ea0df..cb9d5ea0df 100644 --- a/railties/doc/guides/source/icons/caution.png +++ b/railties/doc/guides/source/images/icons/caution.png diff --git a/railties/doc/guides/source/icons/example.png b/railties/doc/guides/source/images/icons/example.png Binary files differindex bba1c0010d..bba1c0010d 100644 --- a/railties/doc/guides/source/icons/example.png +++ b/railties/doc/guides/source/images/icons/example.png diff --git a/railties/doc/guides/source/icons/home.png b/railties/doc/guides/source/images/icons/home.png Binary files differindex 37a5231bac..37a5231bac 100644 --- a/railties/doc/guides/source/icons/home.png +++ b/railties/doc/guides/source/images/icons/home.png diff --git a/railties/doc/guides/source/icons/important.png b/railties/doc/guides/source/images/icons/important.png Binary files differindex 1096c23295..1096c23295 100644 --- a/railties/doc/guides/source/icons/important.png +++ b/railties/doc/guides/source/images/icons/important.png diff --git a/railties/doc/guides/source/icons/next.png b/railties/doc/guides/source/images/icons/next.png Binary files differindex 64e126bdda..64e126bdda 100644 --- a/railties/doc/guides/source/icons/next.png +++ b/railties/doc/guides/source/images/icons/next.png diff --git a/railties/doc/guides/source/icons/note.png b/railties/doc/guides/source/images/icons/note.png Binary files differindex 841820f7c4..841820f7c4 100644 --- a/railties/doc/guides/source/icons/note.png +++ b/railties/doc/guides/source/images/icons/note.png diff --git a/railties/doc/guides/source/icons/prev.png b/railties/doc/guides/source/images/icons/prev.png Binary files differindex 3e8f12fe24..3e8f12fe24 100644 --- a/railties/doc/guides/source/icons/prev.png +++ b/railties/doc/guides/source/images/icons/prev.png diff --git a/railties/doc/guides/source/icons/tip.png b/railties/doc/guides/source/images/icons/tip.png Binary files differindex a3a029d898..a3a029d898 100644 --- a/railties/doc/guides/source/icons/tip.png +++ b/railties/doc/guides/source/images/icons/tip.png diff --git a/railties/doc/guides/source/icons/up.png b/railties/doc/guides/source/images/icons/up.png Binary files differindex 2db1ce62fa..2db1ce62fa 100644 --- a/railties/doc/guides/source/icons/up.png +++ b/railties/doc/guides/source/images/icons/up.png diff --git a/railties/doc/guides/source/icons/warning.png b/railties/doc/guides/source/images/icons/warning.png Binary files differindex 0b0c419df2..0b0c419df2 100644 --- a/railties/doc/guides/source/icons/warning.png +++ b/railties/doc/guides/source/images/icons/warning.png |