# Paginate do a Count(\*) request before, how access that count

**URL:** <https://www.ruby-forum.com/t/paginate-do-a-count-request-before-how-access-that-count/51308>\
**Category:** Rails\
**Created:** [December 29, 2005, 10:10am UTC](https://www.ruby-forum.com/t/paginate-do-a-count-request-before-how-access-that-count/51308 "2005-12-29T10:10:28Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mathieu\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@Mathieu\_C](https://www.ruby-forum.com/u/Mathieu_C)\
**Post date:** [December 29, 2005, 10:10am UTC](https://www.ruby-forum.com/t/paginate-do-a-count-request-before-how-access-that-count/51308/1 "2005-12-29T10:10:28Z")

</div>

Hello,

AV::paginate query first by a count, how access this value in the  
controller or view ?

Why ?

Because I’ll like to display the total number or records found w/o  
doing another expenssive Count.

Thanks,

---

<div class="post-metadata">

**Author:** ![Mathieu\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@Mathieu\_C](https://www.ruby-forum.com/u/Mathieu_C)\
**Post date:** [December 29, 2005, 11:07am UTC](https://www.ruby-forum.com/t/paginate-do-a-count-request-before-how-access-that-count/51308/2 "2005-12-29T11:07:52Z")

</div>

Hi Mathieu

maybe you could use a cached counter value in the database, as shown in  
the  
rails-blog-in-15-minutes-video ? (a bit different from what you exactly  
describe, but less expensive as well)

hope this helps

Thibaut

---

<div class="post-metadata">

**Author:** ![Mathieu\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@Mathieu\_C](https://www.ruby-forum.com/u/Mathieu_C)\
**Post date:** [December 29, 2005, 11:07am UTC](https://www.ruby-forum.com/t/paginate-do-a-count-request-before-how-access-that-count/51308/3 "2005-12-29T11:07:52Z")

</div>

Unless of course you need to query with conditions 🙂

---

<div class="post-metadata">

**Author:** ![Mathieu\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@Mathieu\_C](https://www.ruby-forum.com/u/Mathieu_C)\
**Post date:** [December 29, 2005, 12:02pm UTC](https://www.ruby-forum.com/t/paginate-do-a-count-request-before-how-access-that-count/51308/4 "2005-12-29T12:02:05Z")

</div>

> Unless of course you need to query with conditions 🙂

Plenty of conditions. up to 3 where id in (select x tables) 😉

---

<div class="post-metadata">

**Author:** ![Mathieu\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@Mathieu\_C](https://www.ruby-forum.com/u/Mathieu_C)\
**Post date:** [December 29, 2005, 2:56pm UTC](https://www.ruby-forum.com/t/paginate-do-a-count-request-before-how-access-that-count/51308/5 "2005-12-29T14:56:57Z")

</div>

here is how i do it

page = (@params[:page] ||= 1).to\_i  
perpage = (@session[:perpage] ||= 5).to\_i  
offset = (page - 1) \* perpage

@messages = Message.find\_by\_sql(["select \*,date\_format(created\_on,’%b  
%e  
%h:%i %p’) as fancydate from messages where user\_id = ? order by  
created\_on  
desc ",@session[:userid]])  
@total = @messages.size.to\_i  
@message\_pages = Paginator.new(self,@messages.length,perpage,page)  
@messages = @messages[offset…(offset + perpage - 1)]

@first\_msg = @message\_pages.current.first\_item  
@last\_msg = @message\_pages.current.last\_item

@listing = 'Listing ’ + @first\_msg.to\_s + ’ - ’ + @last\_msg.to\_s + ’ of  
’ +  
@total.to\_s  
This just displays “Listing 1-9 of 100”

hope it helps.  
adam
