我对网络应用有一些想法。遗憾的是,我对网络开发知之甚少。因此,我决定通过在完成Ruby on Rails Tutorial by Michael Hartl之后以资产/票证跟踪器的形式构建“真实单词”示例来自学。我选择这种应用程序是因为它是我熟悉的东西,所以我已经知道它应该如何运作。当我向自己的应用程序添加功能时,这样的系统还需要我使用Rails的许多功能。
但是,我有一些关于建模的问题:
计算机,打印机,显示器,手机都是一种资产,因此它们都会共享一些字段(购买日期,购买价格,保修期,备注),但它们也会有一些特定类型的字段,基于资产类型。从严格的OOP角度来看,我想“分类”它。我应该如何在Rails中执行此操作?
我想随机生成资产和票号;我应该使用该号码作为项目的主键,还是那种不好的做法?我这样做的想法是创建简单,有用的CRUD URL。
太糟糕了,每个“问题”我只能奖励一张支票;我想我会选择最好的整体答案。任何见解都表示赞赏。
答案 0 :(得分:2)
您基本上是在寻找Single Table Inheritance
又名STI
,请参阅此处的参考资料:
http://api.rubyonrails.org/classes/ActiveRecord/Base.html
简而言之:
Active Record允许继承 将类的名称存储在 默认情况下名为“type”的列 (可以通过覆盖来改变 Base.inheritance_column)。这意味着 一个看起来像这样的继承:
类公司<的ActiveRecord :: Base的; 结束
class Firm<公司; 结束
class Client<公司; 端
在您的情况下,每个设备都将从Asset模型继承。
答案 1 :(得分:0)
这是一个开源应用程序,我与其他几个人分道扬..它是一个资产跟踪器,它使用多态来表示资产,但它并没有完全充实你想要做的事情,但通过源代码查看可能会对你有所帮助: