Ruby on rails 控制器继承如何实现抽象控制器

Ruby on rails 控制器继承如何实现抽象控制器,ruby-on-rails,ruby,Ruby On Rails,Ruby,给定我有一个抽象类a,它封装了Decentants B和C所需的逻辑 class A end class B < A end class C < A end A类 结束 B类

给定我有一个抽象类a,它封装了Decentants B和C所需的逻辑

class A
end

class B < A
end

class C < A
end
A类
结束
B类
此外,if拥有资源丰富的路由,为B和C提供路由,因此由各自的控制器处理

为了使事情干涸,我将两个conntroller的共享代码移动到一个“抽象”控制器中(从未被实例化,也没有到其操作的路径):

class AController
控制器操作通常没有参数。但是由于AController是抽象的,这种方法可能是有效的,还是依赖实例变量并简单地调用super,然后从变量中提取所需的信息更好

欢迎有任何见解

编辑1:

谢天谢地,42条建议引起了我的思考;好的,我真正的问题是什么,我想要一个anwser?(如《搭便车者指南》中所述)。也是这样 那么要使用哪种代码重用方法呢


找到一篇不错的博客。

事实上,我认为您的问题可以通过关注点模式(控制器或模型之间共享的模块)来解决:

您的方法是正确的。仅仅因为这是控制器,并不意味着你不能有带参数的方法,必须依赖实例变量。我也很熟悉关注点,但对我来说,它们似乎不适合这里,因为我只想共享功能,而且只有当它们是一个控制器时。
class AController < ApplicationController 
  def new(additional_opts)
    render locals: {base: "stuff"}.merge(additional_opts)
  end 
end

class BController < AController
  def new
    super(foo: 1)
  end
end

class CController < AController
  def new
    super(bar: 1)
  end      
end