Sha256: 07df64476b45b8a9e161b7ac6ec9dd3c4e0b55cd2ed952e4eeaa768023718d0c
Contents?: true
Size: 726 Bytes
Versions: 3
Compression:
Stored size: 726 Bytes
Contents
module PushType class MatrixField < PushType::FieldType include PushType::Fields::Arrays options template: :matrix, mapping: [:key, :value] def param { json_key => mapping.keys } end def mapping @mapping ||= @opts[:mapping].reduce({}) do |h, col| col.is_a?(Hash) ? h.merge(col) : h.update(col => form_helper) end end def struct @struct ||= Struct.new *mapping.keys end def to_json(val) return if val.blank? super.reject { |v| v.blank? or v.values.all?(&:blank?) } end def from_json(val) return if val.blank? super.reject { |v| v.blank? or v.values.all?(&:blank?) }.map { |h| struct.new(*h.values) } end end end
Version data entries
3 entries across 3 versions & 1 rubygems