我刚刚阅读了 Chad Fowler 关于20 Rails Development No-Nos的博客文章。关于单表继承,他评论道:
存储一个名为“type”的列,其中包含一个类名,这是一个很好的指标,表明正在发生一些可疑的事情。这很可疑,但并不总是很糟糕。不过,我认为,无论何时使用它,都应该不止一次地问自己这是否是正确的解决方案。当您有大量 STI 和多态关联时,数据库不会做它们最擅长的事情。
我正在编写一个博客应用程序,并且我正在考虑使用 STI 来对帖子进行评论,以及访问者可以发布的联系消息(如果他们想与我取得联系)。我的Message
模型将继承自我的Comment
模型。它们都有共同的属性,除了Message
会有一个额外的subject
字段。另一个共同点是两者都将提交给 Akismet 进行垃圾邮件检查。
与其像 Chad 建议的那样不止一次地问自己这是否是正确的解决方案,我还想从 Stack Overflow 专家那里得到一些意见!我的提议听起来是否适合 STI?