BetterAr

BetterAr replaces the .all, .first and .count methods for ActiveRecord.

Install

Bundler:

gem 'better_ar'

Command line:

gem install better_ar

Usage

Now a single hash can be passed to ActiveRecord::Base.all that contains not only the where values but also other scopes like 'limit' and 'order' and also implicit joins

User.all(:age => 10, :limit! => 5, :offset! => 10, :order! => :name, :records => {:name => 'test'})

is the same as

User.joins(:records).where(:age => 10, :records => {:name => 'test'}).limit(5).offset(10).order(:name)

It also works on association collections:

User.first.records.all(:level => 2, :limit! => 5, :offset! => 10, :order! => :name, :reports => {:name => 'test'})

This would be the same as:

User.first.records.joins(:reports).where(:level => 2, :reports => {:name => 'test'}).limit(5).offset(10).order(:name)

While this may seem less concise the advantage is being able to dynamically construct the query with a single hash in code.

Legacy

If the params contain :condition it will fall back to the legacy method.

Other

Brian Cardarella (c) 2011

License: MIT (see MIT-LICENSE.txt)