Кто должен брать на себя обязанность по созданию модели из нестандартной структуры?
Всем привет.
Есть 2 модели. Назовем их Order и OrderItem
Экземпляр модели OrderItem можно создать как стандартным способом (передав все требуемые параемтры модели), так и нестандартным, передав структуру с полями, которые отличаются от полей модели. С этими полями проводялся определенные манипуляции, результатом которых является структура со стандартными полями модели.
Кто (и как) должен быть ответственным за создание модели из нестандартных полей? У меня три варианта. Я их расположил от самого худшего (по моему мнению) до самого лучшего.
Вариант 1: Стандартные поля модели готовит контроллер. Почему этот вариант нравится меньше всего, потому что нестандартная структура может быть использована при создании данной модели как ассоциации модели Order
Вариант 2: Создание собственного метода для создания модели. Например def create_from_custom_struct. Этот вариант нравится чуть больше, но при этом требуется некоторый колхоз для поддержки методов new/save при использовании нестандарнтных полей.
Вариант 3: attr_writer для каждого нестандартного поля. Этот вариант нравится больше всего, минусов пока не вижу.
Вопрос такой, прав ли я, что вариант 3 самый верный? Или возможно я упускаю какой-то четвертый вариант?