【问题标题】:How to list all Rails 3 controllers and its public methods如何列出所有 Rails 3 控制器及其公共方法
【发布时间】:2011-12-02 19:26:05
【问题描述】:

我想创建一个检查工具/rake 任务,它会动态检查所有可能从外部访问的公共方法并检查我们的授权规则。

为此,我需要收集所有控制器及其所有公共方法。怎么做?我想使用 Ruby 反射或元数据技术而不是 grepping 文件。

【问题讨论】:

  • 只有当你有一个像match ':controller(/:action(/:id(.:format)))'这样的包罗万象的规则时才有意义

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

AFAICT 在一般情况下这是不可能做到的,因为您无法分辨哪些参数去哪里,例如/items/foo/id/items/foo?bar=baz ?另外,参数的哪些值是可以的?

但是您可以通过

获得不错的价值
Rails.application.routes.routes.map(&:path)

这将为您提供 rake 路由中使用的形式的列表 (/klass/:id/action(.:format))

【讨论】:

  • 我将只检查授权规则(如果存在以及规则是什么)。谢谢
  • 是的,我的意思是,例如,您可能有权编辑管理员和最初创建它们的用户但不能用于其他用户的项目,这取决于合适的选择的参数。
猜你喜欢
  • 2019-06-29
  • 2013-05-02
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2018-01-17
  • 2021-10-20
相关资源
最近更新 更多