Я пытаюсь найти чистый объектно-ориентированный способ решения проблемы, с которой я столкнулся, с помощью DBIx :: Class. У меня есть таблица User, содержащая информацию, общую для всех пользователей. У каждого пользователя также может быть много разных классов, каждый из которых имеет свою уникальную необходимую информацию. Так, например, пользователь может быть администратором и автором. Существуют отдельные таблицы для классов администратора и автора.
Что я хочу сделать, так это создать общий базовый класс для доступа ко всем классам из пользовательского объекта. Итак, базовый класс с именем Schema :: UserClass и два подкласса с именем Schema :: UserClass :: Admin и Schema :: UserClass :: Author. Я бы хотел иметь следующие возможности:
# Get current user
my $user = MyApp->get_user();
# Get user classes
my @classes = $user->classes->all();
for my $class (@classes) {
# Print class name
print $class->name;
}
Аналогичная проблема представлена здесь: http://dbix-class.35028.n2.nabble.com/OO-advice-do-a-subclass-do-something-else-td5614176.html. Но решение, на мой взгляд, является второстепенным, поскольку требует добавления нового отношения для каждого класса.
Я не понимаю, как можно установить связь с базовым классом, зная все подклассы. Любая помощь приветствуется.