"Selecting" a calculated row / Using :select in the paginate


I was trying to use the :select parameter to select a calculated row,
but it appears that the parameter is not picked up by the paginate

I want to add the following to the select statement:

timediff(now(), created_on) as age

So I tried:

@story_pages, @stories = paginate :stories, {:per_page => 10, :include
=> ‘user’, :select => ‘timediff(now(), story.created_on) as story_age’}

… to no avail.

I know I can create a method named “age” for the story model that can
retrieve that calculation, but that’s a query for each element, so it’s
very undesirable.

In case you’re wondering why I don’t calculate the “age” inside my Rails
app, check this blog:


If you know of a solution or alternative, I’ll greatly appreciate your

Ivan V.

Iván Vega R. wrote:

@story_pages, @stories = paginate :stories, {:per_page => 10, :include
=> ‘user’, :select => ‘timediff(now(), story.created_on) as story_age’}

… to no avail.

I’m somewhat sure that paginate (and find for that matter) don’t know
what to do with the :select option.

Try using find_by_sql()

Check out this code snippet:
Even better is the updated version in ‘toolmantim’s’ post at the bottom.



This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs