tchandy / railswhere forked from timcharper/railswhere

An SQL condition builder tool

This URL has Read+Write access

name age message
file CHANGELOG Tue Apr 29 23:37:26 -0700 2008 added changelog [timcharper]
file MIT-LICENSE Sun Sep 13 10:23:33 -0700 2009 Rails 2.3.4 Compat and fixes [tchandy]
file README.textile Sun Sep 13 14:48:17 -0700 2009 Textile Fixes [tchandy]
file Rakefile Sun Sep 13 10:23:33 -0700 2009 Rails 2.3.4 Compat and fixes [tchandy]
file init.rb Tue Nov 13 09:36:55 -0800 2007 search builder git-svn-id: http://railswhere.g... [timcharper]
directory lib/ Sun Sep 13 10:23:33 -0700 2009 Rails 2.3.4 Compat and fixes [tchandy]
directory test/ Sun Sep 13 10:23:33 -0700 2009 Rails 2.3.4 Compat and fixes [tchandy]
README.textile

Where clause generator

Usage example

Returning SQL


sql = Where.new('x=?',5).and( Where.new('x=?',6).or('x=?',7)).to_s`

returns (x=5) and ( ( x=6 ) or ( x=7 ) )

Building a complicated where clause made easy

 
def get_search_query_string
 
   where = Where.new
   where.and('users.first_name like ?', params[:search_first_name] + '%') unless params[:search_first_name].blank?
   where.and('users.last_name like ?', params[:search_last_name] + '%') unless params[:search_last_name].blank?
 
   status_where = Where.new
   for status in params[search_statuses].split(',')
     status_where.or 'status=?', status
   end
   where.and status_where unless status_where.blank?
 
   where.to_s
 end
 
User.find(:all, :conditions => get_search_query_string)`

Inline


User.find(:all, :conditions => Where.new('first_name like ?', 'Tim').and('last_name like ?', 'Harper') )

Sweet chaining action!

Author:

Tim Harper ( “timseeharperATgmail.seeom”.gsub(“see”, “c”).gsub(“AT”, “@”) )

Contributor:

Thiago Pradi (http://github.com/tchandy)