Sha256: 616bec8c60c12732ff789a636c36c77c0a155434843dfd491f2db3ace2d40b33
Contents?: true
Size: 1.17 KB
Versions: 2
Compression:
Stored size: 1.17 KB
Contents
module Para module ModelFieldParsers class Store < Para::ModelFieldParsers::Base register :json, self def parse! process_stored_attributes process_remaining_json_fields end def process_stored_attributes model.stored_attributes.each do |store_key, field_names| fields_hash.delete(store_key) field_names.each do |field_name| fields_hash[field_name] = AttributeField::Base.new( model, name: field_name, type: :string ) end end end # Duplicate fields to avoid updating the hash while iterating through it # then remove remaining json fields from the hash def process_remaining_json_fields fields_hash.dup.each do |key, field| fields_hash.delete(key) if json_field?(field) end end def applicable? !model.stored_attributes.empty? || model_includes_json_fields? end def model_includes_json_fields? fields_hash.any? do |_, field| json_field?(field) end end def json_field?(field) field.type.to_s.in?(%w(json jsonb)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
para-0.5.4 | lib/para/model_field_parsers/store.rb |
para-0.5.3 | lib/para/model_field_parsers/store.rb |