aboutsummaryrefslogtreecommitdiffstats
path: root/guides/source/active_record_querying.textile
diff options
context:
space:
mode:
authorVijay Dev <vijaydev.cse@gmail.com>2012-05-30 23:05:48 +0530
committerVijay Dev <vijaydev.cse@gmail.com>2012-05-30 23:08:35 +0530
commit3b6d66a0c8cb631b8fadf7472bc068c9b9bf9f65 (patch)
treeaaea5b309ebd3caef6509ae59eb228ed904d6ae0 /guides/source/active_record_querying.textile
parentec74763c393c6a5f54eb64f0313610aead7f815a (diff)
downloadrails-3b6d66a0c8cb631b8fadf7472bc068c9b9bf9f65.tar.gz
rails-3b6d66a0c8cb631b8fadf7472bc068c9b9bf9f65.tar.bz2
rails-3b6d66a0c8cb631b8fadf7472bc068c9b9bf9f65.zip
Revert "Revert "[AR querying guide] Add examples for take(limit), first(limit) and last(limit)""
This reverts commit 5559a2ae98dcda6854f38890025b52edfb2836f5. Reason: These are for selecting multiple objects and there isn't a need to club them with the selecting single objects section, as discussed with the author.
Diffstat (limited to 'guides/source/active_record_querying.textile')
-rw-r--r--guides/source/active_record_querying.textile48
1 files changed, 48 insertions, 0 deletions
diff --git a/guides/source/active_record_querying.textile b/guides/source/active_record_querying.textile
index 294ef25b33..eceeb814fd 100644
--- a/guides/source/active_record_querying.textile
+++ b/guides/source/active_record_querying.textile
@@ -259,6 +259,54 @@ SELECT * FROM clients WHERE (clients.id IN (1,10))
WARNING: <tt>Model.find(array_of_primary_key)</tt> will raise an +ActiveRecord::RecordNotFound+ exception unless a matching record is found for <strong>all</strong> of the supplied primary keys.
+h5. take
+
+<tt>Model.take(limit)</tt> retrieves the first number of records specified by +limit+ without any explicit ordering:
+
+<ruby>
+Client.take(2)
+# => [#<Client id: 1, first_name: "Lifo">,
+ #<Client id: 2, first_name: "Raf">]
+</ruby>
+
+The SQL equivalent of the above is:
+
+<sql>
+SELECT * FROM clients LIMIT 2
+</sql>
+
+h5. first
+
+<tt>Model.first(limit)</tt> finds the first number of records specified by +limit+ ordered by primary key:
+
+<ruby>
+Client.first(2)
+# => [#<Client id: 1, first_name: "Lifo">,
+ #<Client id: 2, first_name: "Raf">]
+</ruby>
+
+The SQL equivalent of the above is:
+
+<sql>
+SELECT * FROM clients LIMIT 2
+</sql>
+
+h5. last
+
+<tt>Model.last(limit)</tt> finds the number of records specified by +limit+ ordered by primary key in descending order:
+
+<ruby>
+Client.last(2)
+# => [#<Client id: 10, first_name: "Ryan">,
+ #<Client id: 9, first_name: "John">]
+</ruby>
+
+The SQL equivalent of the above is:
+
+<sql>
+SELECT * FROM clients ORDER By id DESC LIMIT 2
+</sql>
+
h4. Retrieving Multiple Objects in Batches
We often need to iterate over a large set of records, as when we send a newsletter to a large set of users, or when we export data.