Martin Carlin

Rails Tips

Reading time: Only a minute

in ruby, rails

Use helper functions in models and controllers

Sometimes you just need to use ActionView functions in your models or controllers.

A way to achieve this is to include them like so:

include ActionView::Helpers::TextHelper

but a nicer approach seems to be to use the function directly like so:

ActionController::Base.helpers.[FUNCTION_NAME] (arguments)

Better pagination - avoid multiple queries

First, do your query as normal but with one difference.

results = ModelName.select('SQL_CALC_FOUND_ROWS model.*')

and then immediately after, run the following:

total = ModelName.connection.execute('SELECT FOUND_ROWS()')

To get the actual total number, you can use .first on the total object.

This works even when using limit and offset in the original query.