module DefaultForm::ActiveRecord::Extend

Public Instance Methods

input_attributes_by_model() click to toggle source
# File lib/default_form/active_record/extend.rb, line 4
def input_attributes_by_model
  cols = {}

  attributes_by_model.each do |name, column|
    r = {}
    r.merge! column.slice(:type, :subtype, :outer)
    r.merge! input_type: column[:raw_type]

    if r[:type].respond_to? :input_type
      r.merge! input_type: r[:type].input_type
    end

    case r[:type].class.name
    when 'ActiveRecord::Enum::EnumType'
      r.merge! input_type: :enum
      r.merge! mapping: r[:type].send(:mapping)
    end

    if inheritance_column.to_s == name
      r.merge! input_type: :enum
    end
    r.merge! DefaultForm.config.mapping.fetch(r[:input_type], {})

    cols.merge! name => r
  end

  cols
end