Я хочу знать, что такое рельсы, способ преобразования записи подкласса в другую запись подкласса, только изменение типа не работает, а также суперкласс для подкласса и наоборот.STI и подклассы
Заранее спасибо
Маркив
Я хочу знать, что такое рельсы, способ преобразования записи подкласса в другую запись подкласса, только изменение типа не работает, а также суперкласс для подкласса и наоборот.STI и подклассы
Заранее спасибо
Маркив
Все, что вы должны сделать, это изменить поле типа. Убедитесь, что вы сохранили запись и перезагрузите объект Ruby из базы данных.
Если это не сработает, можете ли вы предоставить некоторый код Ruby, который изолирует проблему?
Вы спрашиваете, как изменить объект, являющийся подклассом, на другой подкласс его суперкласса? Это действительно невозможно в схеме ОО. Можно передать объект из суперкласса в подкласс, но его нельзя вернуть, поскольку теперь объект может содержать переменные и методы, которые нет в суперклассе.
По названию этот пост, OP использует одностраничное наследование. –
Вы правы, это возможно, хотя вы все равно можете тянуть материал, который не имеет смысла, но он не должен разрушать ваш объект. Меня интересует прецедент для этого, не мог бы вы подумать о том, что вам нужно было сделать, чтобы изменить столбец типа? – lambdabutz
полиморфизм в Rails будет делать трюк:
subclass1record.becomes(Subclass2)
Примечание: Новый экземпляр будет поделиться ссылкой на те же атрибуты исходного класса. Поэтому любое изменение атрибутов в любом экземпляре будет влиять на другое.
Чтобы избежать этого, вы можете дублировать запись первого:
subclass1record_new = subclass1record.dup
И затем использовать новую запись вместо:
subclass1record_new.becomes(Subclass2)
Thanx, который работал – markiv