Module: Puffer::OrmAdapter::ActiveRecord

Defined in:
lib/puffer/orm_adapter/active_record.rb

Instance Method Summary collapse

Instance Method Details

#columns_hashObject



5
6
7
8
9
# File 'lib/puffer/orm_adapter/active_record.rb', line 5

def columns_hash
  klass.columns_hash.inject({}) do |result, (name, object)|
    result.merge name => {:type => object.type}
  end
end

#filter(scope, fields, options = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/puffer/orm_adapter/active_record.rb', line 11

def filter scope, fields, options = {}
  fields = fields.columns
  conditions, order = extract_conditions_and_order!(options)

  conditions_fields = fields.select {|f| conditions.keys.include?(f.field_name)}.to_fieldset
  search_fields = fields.select {|f| !conditions_fields.include?(f) && search_types.include?(f.column_type)}
  all_fields = conditions_fields + search_fields

  conditions = conditions.reduce({}) do |res, (name, value)|
    field = conditions_fields[name]
    res[field.query_column] = value if field
    res
  end

  order = order.map {|field, direction| "#{field} #{direction}"}.join(', ')

  scope.includes(includes(all_fields)).where(searches(search_fields, options[:search])).where(conditions).order(order)
end