Module: SorbetRails::PluckToTStruct
- Extended by:
- T::Sig
- Defined in:
- lib/sorbet-rails/rails_mixins/pluck_to_tstruct.rb
Defined Under Namespace
Classes: UnexpectedType
Instance Method Summary collapse
Instance Method Details
#pluck_to_tstruct(ta_struct) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/sorbet-rails/rails_mixins/pluck_to_tstruct.rb', line 13 def pluck_to_tstruct(ta_struct) tstruct = ta_struct.get_type if !(tstruct < T::Struct) raise UnexpectedType.new("pluck_to_tstruct expects a tstruct subclass, given #{tstruct}") end keys = tstruct.props.keys # loosely based on pluck_to_hash gem # https://github.com/girishso/pluck_to_hash/blob/master/lib/pluck_to_hash.rb keys_one = keys.size == 1 pluck(*keys).map do |row| row = [row] if keys_one value = Hash[keys.zip(row)] tstruct.new(value) end end |