【发布时间】:2018-09-06 21:47:21
【问题描述】:
我的 Rails API 中有一系列非常相似的控制器——它们只有基本的 CRUD 操作,只是它们存储的基础数据的形状不同。
我实现授权的方式,在每个控制器中,我都有一些 before_action 调用来检查给定 CRUD 操作的适当级别的权限——这些权限检查实际上是重复的,除了每个都采用不同的命名实例变量——例如有人可能会说
before_action -> { is_app_admin?(@app_name) } #where @app_name is the actual name of the app.
现在,如果控制器本身可以接受一个参数,我可以将这些放在 ApiController 中的检查之前,而不必重复它们。或者,我可以将所有控制器中的变量名称更改为像@app_name 这样的通用名称,但在控制器本身中会导致代码的可读性降低。
有没有一种标准方法可以在这种场景中抽象出重复的代码?
【问题讨论】:
标签: ruby-on-rails ruby controller code-duplication