DBIx::Class で遭遇した問題を実装するためのクリーンなオブジェクト指向の方法を見つけようとしています。すべてのユーザーに共通の情報を含む User テーブルがあります。各ユーザーは、独自の必須情報を持つさまざまなクラスを持つこともできます。したがって、たとえば、ユーザーは管理者と作成者である場合があります。管理者クラスと作成者クラス用に別のテーブルがあります。
私ができるようにしたいのは、共通の基本クラスを作成して、ユーザー オブジェクトからすべてのクラスにアクセスすることです。つまり、Schema::UserClass という基本クラスと、Schema::UserClass::Admin および Schema::UserClass::Author という 2 つのサブクラスです。私ができるようにしたいのは、次のようなものです。
# 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に示されています。ただし、クラスごとに新しい関係を追加する必要があるため、私の意見では解決策は不十分です。
すべてのサブクラスの知識を持つ基本クラスとの関係をどのように作成できるかわかりません。どんな助けでも大歓迎です。