Есть 3 модели: Item, Property, PropertyValue
Item <--(HABTM)--> Property
Item <--(hasMany)-- PropertyValue
PropertyValue --(belongsTo)--> Property
Другими словами, некая сущность имеет произвольное количество свойств и значения для этих свойств. Нюанс в том, что в зависимости от типа свойства, значение по-разному валидируется и может требовать дополнительной обработки при сохранении/загрузке.
Первой идеей было наследовать от PropertyValue модели каждого типа (PropertyValueString, PropertyValueNumeric и т.п.), указывать одну и ту же таблицу для хранения, переопределять методы валидации и коллбеки, а саму PropertyValue использовать как фабрику.
Однако, ни в PropertyValue, ни в какой другой модели загрузить унаследованные модели ни с помощью App::Import, ни с помощью $uses не удалось.
Я что-то делаю не так или это в принципе невозможно? С радостью выслушаю альтернативные варианты решения средствами Cake. Зашивать всю логику в одну модель на свитчах совсем не хочется. |