使用Rails 3实现多表继承

17

在Rails 3中,多表继承是否存在标准或最佳实践?到目前为止,我能找到的最好的文章是:

http://mediumexposure.com/multiple-table-inheritance-active-record/

但即使如此,它也需要进行一些更改(例如将requires移动到初始化程序中而不是旧的/config/environment.rb)

有更好的资源/标准吗?

3个回答

14

美观易读的API,使用简单。在几年前Rails没有好的MTI解决方案之前,这将为我节省了很多麻烦。 - iconoclast
不错的插件。但值得一提的是,它似乎在数据层面上没有维护引用完整性。如果这对你很重要,那么丹·查克在《企业级Rails》(在线免费版本)中很好地涵盖了这个问题。 - doub1ejack
@Hassan,在使用acts_as-relation gem和devise gem的情况下,我应该把我的注册表单放在哪里呢?我的Clients devise模型是actable的,而另外3个模型则是acts_as :clients。那么我该如何处理我的注册表单呢?这另外三个扮演客户端的模型都有不同的注册内容。 - Afolabi Olaoluwa

6
我最近fork了一个有前途的gem来实现Rails中的多表继承和类继承。我花了几天时间进行快速开发、修复、注释和文档,并将其重新发布为CITIER(用于Rails的类继承和表继承嵌入)。建议您查看一下:https://github.com/PeterHamilton/citier。它实际上从你提到的那篇文章中借鉴了一些概念。

只是查看了你网页上的示例,当你调用 d.save 保存你的 Dictionary 对象时,它似乎调用了三次更新操作,其中前两个被覆盖:
  1. citier -> UPDATE products SET type = 'Product' WHERE id = 1
  2. citier -> SQL : UPDATE products SET type = 'Book' WHERE id = 1
  3. citier -> SQL : UPDATE products SET type = 'Dictionary' WHERE id = 1
这准确吗?还是前两个被忽略了,只有最后一个被调用了?
- Matt Huggins

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接