Module: Pluckex::Calculations
- Defined in:
- lib/pluckex/calculations.rb
Instance Method Summary collapse
-
#pluck_tied_by_id(*col_name) ⇒ Object
one arg case: Person.pluck_tied_by_id(:name) # => 2=>‘Jeremy’, 3=>‘Jose’.
-
#pluck_with_keys(*col_names) ⇒ Object
Person.pluck_with_keys(:id, :name) # => [:name=>‘David’, :name=>‘Jeremy’, :name=>‘Jose’].
Instance Method Details
#pluck_tied_by_id(*col_name) ⇒ Object
one arg case:
Person.pluck_tied_by_id(:name)
# => {1=>'David', 2=>'Jeremy', 3=>'Jose'}
multiple args case:
Person.pluck_tied_by_id(:name, :age)
# => {1=>{:name=>"David", :age=>25}, 2=>{:name=>"Jeremy", :age=>27}}
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/pluckex/calculations.rb', line 10 def pluck_tied_by_id(*col_name) if col_name.length == 1 col_names = [:id] << col_name.first Hash[*self.pluck(*col_names).flatten] else col_hash_array = self.pluck_with_keys(*col_name) id_array = self.pluck(:id) Hash[*[id_array, col_hash_array].transpose.flatten] end end |
#pluck_with_keys(*col_names) ⇒ Object
Person.pluck_with_keys(:id, :name)
# => [{:id=>1, :name=>'David'}, {:id=>2, :name=>'Jeremy'}, {:id=>3, :name=>'Jose'}]
23 24 25 26 27 28 29 30 |
# File 'lib/pluckex/calculations.rb', line 23 def pluck_with_keys(*col_names) self.pluck(*col_names).map do |element| hash = {} col_names.map.with_index do |col, i| hash.merge!(col => element[i]) end.uniq end.flatten end |