Rails - 单表继承和路由

时间:2011-08-21 23:12:16

标签: ruby-on-rails-3 routing single-table-inheritance

我实现单表继承但是在路由方面遇到了一些麻烦。我有两个类,Gamma和Beta,都继承自Alpha。我知道如果我想使用Alpha作为控制器而不是Beta和Gamma的单独控制器,我可以按照here的说明将资源默认设置为另一个控制器。

但是,我想要做的是让一些方法由中央Alpha控制器处理(例如编辑和更新),而其他方法由子类Beta和Gamma控制器处理。如何指定哪些方法应该指向Alpha控制器以及哪些方法应该由Beta和Gamma处理?

1 个答案:

答案 0 :(得分:0)

对控制器使用继承。在AlphaController类中实现编辑和更新功能,然后在您的BetaControllerGammaController类中继承该类,然后在其中实现其他功能。

class AlphaController < ActionController::Base

   def edit
      ...
   end

   def update
      ...
   end

end

class BetaController < AlphaController

   def index
      ...
   end

end

请注意,这会使您的网址... / beta / edit和... / beta / update。

您只想将views / alpha / edit.html.erb用作局部​​视图,然后在Beta / gamma视图中将Alpha视图页面渲染为部分视图。

请记住,即使您将对象存储在一个表Alpha中,您的模型中仍然有两个类,Beta和Gamma,并且应该将它们视为这样。