ROR中的多态

2011.11.28
在重构公司网站时,发现这么一个问题:
数据库中有很多种方案比如,SolutionA, SolutionB, SolutionC...他们的字段基本上都相同,我就在想,为什么不弄一个Solution模型,一个表,来统一管理存储这些数据呢?

好吧,重构之:
我先创建Solution模型,Solution模型多增加了一个type字段

分别将SolutionA, SolutionB, SolutionC...中数据导入到Solution表中,type字段用来记录这条记录属于SolutionA、SolutionB还是SolutionC...

将SolutionA, SolutionB, SolutionC...这些模型都继承到Solution下

我们在控制台中可以测试到,SolutionA.all时出来的都是Solution中type为"SolutionA"的数据

ROR多态时,默认的字段就是type,如果type字段已经被使用了,那你可以在Solution中使用set_inheritance_column来手动指定一个字段,比如:set_inheritance_column :object_type

 

Home Blog Delicious Github Flickr About Contact

© Miclle.Zheng . Powered by Forest Chalet