我想学学在 Rails 中如何使用继承,找的资料都是 STI 相关的,这个只是 Model 层的。之上的 Controller 和 Views 如何实现没概念,有人知道有类似的例子么,学习一下别人的实现代码。 谢谢。
Rails 里的继承不是给 Model 用就是给 Lib 用,没人会继承一个 Controller 或是继承 View 啊,而且后者还是不可继承的。 而且为了弘扬组合比继承好的伟大革命精神,现在都很少用继承的。
#5 楼 @dreamable 首先,慎用继承,如果 model 或者 contorller 有重复的代码,可以抽取 Concern http://37signals.com/svn/posts/3372-put-chubby-models-on-a-diet-with-concerns
然后,Model 用了继承,Controller 不一定要继承,像 Ruby China 的消息通知(https://github.com/ruby-china/ruby-china/tree/master/app/models/notification)继承了同一个 model,但是 Controller 用的是同一个,一致的 read, destroy 行为。继承本来不就是让他们表现一样的行为么?消息通知用继承的原因是希望各类消息存在同一个集合。
至于 View,if 处理没问题,或者像 Ruby China 这样利用局部模板
<%= render :partial => "notifications/#{notification.class.name.underscore}", :locals => {:notification => notification} %>