Suppose a user fills out a form that stores a product description (name, size, weight, price, etc.) But instead of the predefined fields, the user wants to add and delete new fields via the interface. Kind of a user-configurable form (add a new text field, add a new field for numbers, delete this field, etc.) In addition, the user wants to save the form as a template in order to generate new forms based on it without having to create the fields again. What might be the most optimal way to implement this? I was thinking that each field can be an object with one attribute of a certain type (an object with the text attribute, an object with the integer attribute, etc.), connected by associations with the main object of the form. But how do I display all these different objects on a single page, as editable fields, dynamically added in the order of creation? And it seems to me that this approach is bad for performance.