Metal 的扩展

有一些模块和 Metal 一样也有 process_action 方法,并且它们也被 include 进了 Action Controller,并且我们自己定义的类没有重写这个方法。

根据 Ruby 的代码执行规则,执行 process_action 时它们都会被执行(并且这个方法执行顺序先于 Metal 同名的方法)。

源代码里,Metal 仅代表 metal.rb 这个文件,不包括与其同名的 metal 目录。

1) 继承 Abstract Controller 的财富

由 Metal 到 Base 继承而来。

2) 使用 Action Dispatch 的资源

主要是 Action Dispatch 的 http 和 middleware 下的内容。

包括但不限于:

处理 request、response 相关和 headers 相关。(Metal 也可以做,但这里得到了充分利用)

3) 协作 Action View

有很多类似的方法或丝丝关联,比如:渲染。

4) 少量的 Active Model

为了约定优于配置,很少的一部分方法和 Active Model 的 Naming 模块有关联。

包括但不限于:

wrap_parameters

polymorphic_url
polymorphic_path

5)提供很多方法,允许你在 Controller 或 action 里处理请求,并响应。

最后更新于