Я пытаюсь найти чистый способ OO для реализации проблемы, с которой я столкнулся с DBIx :: Class. У меня есть таблица User, которая содержит информацию, общую для всех пользователей. Каждый пользователь может также иметь много разных классов, каждый из которых имеет свою уникальную требуемую информацию. Например, Пользователь может быть Администратором и Автором. Существуют отдельные таблицы для классов администратора и автора.DBIx :: Класс абстрактный родительский ResultSet
Что я хочу сделать, это создать общий базовый класс для доступа ко всем классам из пользовательского объекта. Таким образом, базовый класс называется 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. Но решение является подходом на мой взгляд, поскольку для этого требуется добавить новые отношения для каждого класса.
Я не вижу, как отношения могут быть сделаны базовому классу со знанием всех подклассов. Любая помощь приветствуется.