module AcFilters

Public Instance Methods

apply_ac_filter(parsed_filter, system_params) click to toggle source
# File lib/ac_filters_utils.rb, line 169
def apply_ac_filter(parsed_filter, system_params)
  conditions = parse_conditions(parsed_filter, system_params)
  find_params = {:conditions => conditions}
  filter_def = AcFilterDef.find(parsed_filter['filter_def_id'])
  if filter_def.has_sql_query?
    sql_to_execute = ActiveRecord::Base.send(:sanitize_sql_array, conditions)
    r = []
    ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(as :hash) {|i| r << i}
  else
    find_params[:select] = filter_def.select_sql.to_s unless filter_def.select_sql.nil?
    find_params[:order] = filter_def.order_sql.to_s unless filter_def.order_sql.nil?
    find_params[:joins] = filter_def.joins_param unless filter_def.joins_param.nil?
    find_params[:include] = filter_def.include_param unless filter_def.include_param.nil?
    find_params[:group] = filter_def.group_param unless filter_def.group_param.nil?
    r = find(:all, find_params)
  end
  r
end