Activerecord-association: создать новый объект (найти класс)
У меня есть модель с отношением, и я хочу создать новый объект типа отношений.
Пример: у человека есть компания, а у меня есть объект-человек: теперь я хочу создать объект-компанию.
Класс объекта объекта определяется в отношении, поэтому я не думаю, что мне нужно «знать» этот класс, но я должен быть в состоянии попросить объект-лицо предоставить мне новый экземпляр типа компании? Но я не знаю как.
Это, я думаю, тот же вопрос, что иНовая модель объекта через ассоциацию но я пользуюсьPHPActiveRecordи не рубиновый.
Причина этого: у меня есть абстрактный суперклассperson
и двое детей имеют свои собственные отношения с типом объекта компании. Мне нужно иметь возможность создавать правильный класс в абстрактном человеке.Обходной путь должен получить это непосредственно отstatic $has_one
массив:
$class = $this::$has_one[1]['class_name'];
$company = new $class;
конечно, можно устранить жестко запрограммированное число, выполнив поиск имени ассоциации в массиве, но это все еще довольно уродливо.
Если есть кто-нибудь, кто знает, как это реализовано в Ruby и чем отличается реализация phpactiverecord, я мог бы получить оттуда некоторые идеи?Некоторое тестирование показало, что, хотя «поиск моего имени класса в массиве» выглядит довольно странно, это никак не влияет на производительность, и при использовании он достаточно функционален.