module Fieldable
  extend ActiveSupport::Concern

  included do
    def self.build_all(obj)
      admission_table = obj.class.table_name.match('admission_')
      field_name = admission_table ? table_name.gsub(/admission_/, '') : table_name
      obj_fields = fields.keys - all.pluck(:field)
      obj_fields.each { |f| obj.send(field_name).build(field: f) }
      obj.send(field_name).sort_by { |f| fields.keys.index(f.field) }
    end
  end
end
