Module: ColumnQueries::RealtionExtensions

Defined in:
lib/column_queries/relation_extensions.rb

Instance Method Summary collapse

Instance Method Details

#to_columns_as_int_arrays(*columns) ⇒ Object



7
8
9
10
# File 'lib/column_queries/relation_extensions.rb', line 7

def to_columns_as_int_arrays(*columns)
  relation = columns.empty? ? self : select(columns)
  @klass.connection.select_columns_as_int_arrays(relation.arel.to_sql)
end

#to_int_array(column = nil) ⇒ Object



2
3
4
5
# File 'lib/column_queries/relation_extensions.rb', line 2

def to_int_array(column = nil)
  relation = column.nil? ? self : select(column)
  @klass.connection.select_int_values(relation.arel.to_sql)
end

#to_int_groups(keys_column, values_column) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/column_queries/relation_extensions.rb', line 12

def to_int_groups(keys_column, values_column)
  keys, values = to_columns_as_int_arrays(keys_column, values_column)
  keys.zip(values).inject({}) do |hash, pair|
    value = hash[pair.first]
    if value
      value << pair.last
    else
      hash[pair.first] = [pair.last]
    end
    hash
  end
end

#to_int_hash(keys_column, values_column) ⇒ Object



25
26
27
28
# File 'lib/column_queries/relation_extensions.rb', line 25

def to_int_hash(keys_column, values_column)
  keys, values = to_columns_as_int_arrays(keys_column, values_column)
  Hash[keys.zip(values)]
end