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.



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

def initialize(klass)
  @klass = klass
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m) ⇒ Object



32
33
34
# File 'lib/wharel.rb', line 32

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



37
38
39
40
41
# File 'lib/wharel.rb', line 37

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