我实现单表继承但是在路由方面遇到了一些麻烦。我有两个类,Gamma和Beta,都继承自Alpha。我知道如果我想使用Alpha作为控制器而不是Beta和Gamma的单独控制器,我可以按照here的说明将资源默认设置为另一个控制器。
但是,我想要做的是让一些方法由中央Alpha控制器处理(例如编辑和更新),而其他方法由子类Beta和Gamma控制器处理。如何指定哪些方法应该指向Alpha控制器以及哪些方法应该由Beta和Gamma处理?
答案 0 :(得分:0)
对控制器使用继承。在AlphaController
类中实现编辑和更新功能,然后在您的BetaController
和GammaController
类中继承该类,然后在其中实现其他功能。
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,并且应该将它们视为这样。