Class: Wharel::VirtualRow

Inherits:
BasicObject
Defined in:
lib/wharel.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass) ⇒ VirtualRow

Returns a new instance of VirtualRow.



18
19
20
# File 'lib/wharel.rb', line 18

def initialize(klass)
  @klass = klass
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m) ⇒ Object



22
23
24
# File 'lib/wharel.rb', line 22

def method_missing(m, *)
  @klass.column_names.include?(m.to_s) ? @klass.arel_table[m] : super
end

Class Method Details

.build_query(klass, &block) ⇒ Object



27
28
29
30
31
# File 'lib/wharel.rb', line 27

def build_query(klass, &block)
  row = new(klass)
  query = (block.arity == 0) ? row.instance_eval(&block) : block.call(row)
  ::ActiveRecord::Relation === query ? query.arel.constraints.inject(&:and) : query
end