def attribute(attr)
      return super unless self.class.metadata_column_fields.include?(attr.to_sym)

      options = self.class.metadata_column_fields[attr.to_sym] || {}
      default = options.include?(:default) ? options[:default] : nil
      _metadata_hash.include?(attr) ? HasMetadataColumn.metadata_typecast(_metadata_hash[attr], options[:type]) : default
    end
def attribute(attr)
      return super unless self.class.metadata_column_fields.include?(attr.to_sym)

      options = self.class.metadata_column_fields[attr.to_sym] || {}
      default = options.include?(:default) ? options[:default] : nil
      _metadata_hash.include?(attr) ? HasMetadataColumn.metadata_typecast(_metadata_hash[attr], options[:type]) : default
    end
ATTRIBUTE MATCHER METHODS