Sha256: 9225459547b32b95acadd5f32bc200acffb821f0c9dded49e7a0f5cccfbae748
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
module RelationToStruct::ActiveRecordBaseExtension extend ::ActiveSupport::Concern module ClassMethods def structs_from_sql(struct_class, sql, binds=[]) result = connection.select_all(sanitize_sql(sql, nil), "Structs SQL Load", binds) if result.columns.size != struct_class.members.size raise ArgumentError, 'Expected struct fields and columns lengths to be equal' end if result.columns.size != result.column_types.size raise ArgumentError, 'Expected unique column names count and column count to be equal' end if result.columns.size == 1 result.cast_values().map do |tuple| struct_class.new(tuple) end else result.cast_values().map do |tuple| struct_class.new(*tuple) end end end def pluck_from_sql(sql, binds=[]) result = connection.select_all(sanitize_sql(sql, nil), "Pluck SQL Load", binds) result.cast_values() end end end ::ActiveRecord::Base.send(:include, RelationToStruct::ActiveRecordBaseExtension)
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
relation_to_struct-0.0.5 | lib/relation_to_struct/active_record_base_extension.rb |