带有 Catalyst 和 DBIx::Class 的 Perl - 如何在继承树中加载一组类?

标签 perl inheritance catalyst dbix-class

我想要一个基类 Vehicle 并且我的大部分系统只使用这种类型的 ARRAY。对于 Car、Airplane 等子类型。当调用 canFly 等方法时,Car 会响应 false,而 Airplane 会响应 true。

我打算使用一个单独的数据库表(将听取其他建议),其中一个子类型列指示实际的子类类型,其他同级子类使用的列的值为 NULL。我如何在 DB 查询中拦截 Vehicle 类的创建,而不是给定的(子类类型)创建适当的子类? (如果这个问题不清楚,我将尝试在周六晚上(从现在开始大约 28 小时后)更好地澄清。)

最佳答案

你要找的是Dynamic Subclassing在 DBIx::类中。在 Rails/ActiveRecord 中,他们称之为单表继承 (STI)。

我链接到的页面在 DBIC Cookbook 中描述了如何覆盖 inflate_result,以便您可以测试行的车辆类型,然后将其重新分配到所需的子类中。

关于带有 Catalyst 和 DBIx::Class 的 Perl - 如何在继承树中加载一组类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17239471/

相关文章:

mysql - 通过 Perl 合并两个 MySql 数据库(不是表)

perl - 从 postgresql 函数中检索异常消息

Catalyst 对 Perl 5.8.8 的支持

perl - 从 Text::Xslate 中的 Template::Toolkit 获取 WRAPPER 功能

perl - 如何在 Perl 中解析多维哈希变量

linux - bash 中的这个 perl one liner 是如何工作的?

perl - 如何在 Perl 中用递增的数字替换 token ?

c# - 使用多态性和List时访问子类成员

c++ - C++静态多态性(CRTP)并使用派生类中的typedef

匿名子类中的java通用对象构造