There are cases in which the default mapping is not suitable for the intended purpose of an attribute. The child_order attribute, for example, which is of the referencelist type, serves to sort navigations and is mapped to the linklist type. As a result, sorting a navigation creates links to each of its navigation points. Since it's rather cumbersome to delete these links, a mapping that does without consistency checking is preferable.
This is exactly what custom attribute types have been designed for. They let you change the mapping of attribute types.
Currently, only two alternative attribute mappings are available: referencelist attributes can be represented as text instead of linklist, and reference attributes can be represented as string instead of linklist attributes. This prevents the creation of links in the CMS, and no consistency checks are performed.
There are three ways to specify a different mapping.
1. Mapping across object classes
For mapping attributes by their name to a different type, the Fiona7.custom_attribute_types is available. It doesn't matter to which object classes these attributs belong; only their name counts.
A good candidate for this is the above-mentioned attribute for sorting a navigation, child_order:
Fiona7.custom_attribute_types = {
child_order: :text
}