ActiveRecordでパラメータでconditions条件を追加しやすいヘルパ

会社のプロジェクトで使われているActiveRecordの関数を紹介。
lib/active_record/active_record_helper.rb

module ActiveRecordHelper
  def flatten_conditions(conditions, op = "and")
    return nil if conditions.empty?
    ps = []
    condition = conditions.collect do |c|
      next if c.size < 1
      ps += c[1..(c.size)]
      "( #{c[0]} )"
    end.delete_if { |c| c.blank? }.join(" #{op} ")
    [condition, ps].flatten unless condition.empty?
  end
end

class ActiveRecord::Base
  include ActiveRecordHelper
end


これで、params[]の値によってconditionに条件を加えたり加えなかったりするプログラムの時、
簡単に条件を作る事ができます。

  @condition = []
  @condition << [" prefecture_id = ? ", params[:prefecture] ] if params[:prefecture]
  @condition << [" sex = ? ", params[:sex] ] if params[:sex]
  @users = User.find(:all, :conditions => @conidition)

複数条件を書く時面倒なんで、助かっています。
パラメータが無く、@conditions = [] のみの場合であれば、nilが返って条件無くなるので。