www.SmarteGuru.com
  Home | Blogs | Recipe | Find a Friend | Discussion Board | Resources | Developers Area | Articles | Health |  Login | Register Now 

ActiveRecord :select with :include

ActiveRecord is an important element included in Ruby on Rails, writing a SQL database driven application without actually writing any SQL is really pleasurable.

The pain for me arrived when I was working on some reporting feature that was pulling various data across a quite long chain of has_many relationships.

I experienced a quite high load in the DB at the moment of the query and after that seconds of CPU full load eaten by my ruby process.
I checked what was going on in my log/development.log and I noticed the query was extracting all the columns of every table even if I specified a :select option, this turned a query originally quite light into a heavy one.

I googled a bit and I found out that with ActiveRecord, if you specify :select and :include option you don’t get anymore 100% joy but just 50%, your :select statement will be ignored.

Today I am going to put back some percent of the joy.

select_with_include gem will increase the joy level up to 80% (no, not 100% yet)

select_with_include will allow you to specify a limited :select statement like

"table1.column1, table1.column3, table2.column2"
  

or like

"table1.*, table2.column3, table2.column4, talbe3.*"
  

At the moment you can’t specify functions or calculated fields. There are reason for that and I’m going to discuss these reason in the next posts. I’ll try as well to explain how this gem works around the original ActiveRecord code.

For the moment you’re invited to get select_with_include gem using

sudo gem install select_with_include
  

and test it yourself specifying

require 'select_with_include'
  

in your config/environment.rb file.

If you’re a script/console user you can just try, while you

tail -f log/development.log
  

to launch the same find with :include and :select with and without requiring the gem.

If you find any issue you’re really welcome to use the issue tracker

Related Posts

Tags: , , ,


Viewed: 29 views

2 Responses to “ActiveRecord :select with :include”

  1. Smart Says:

    Thanks for sharing very2 useful content

  2. Vikram Says:

    Greate content, i love it. Thanks

Leave a Reply

Comment moderation is enabled. Your comment may take some time to appear.

Home - About Us - Help - Terms and Conditions - Site Map - Link to Us - Resources - Contact Us
Google Rank Calculator | Suggest developer resource | Suggest Article
All rights reserved © 2007 SmarteGuru.com.