有没有办法从这个障碍中获取信息

马特·埃尔霍蒂比

所以我有我的Rails Controller

class SomeController < ApplicationController
  include Something
  ...
  require_information do
    more_infomation "Stuff" do
      data :stuff_i_want_to_access, [:index]
      data :more_stuff_i_want_to_access, [:edit]
      data :more_stuff_i_want_to_access, [:show]
    end
  end

require_informationDSL是我们创建具有在应用一些自定义的权限,我的东西,但问题是我需要访问的数据从别的地方。有没有一种方法可以从另一个位置访问这3个数据元素。我试过了

SomeController.class_variables
=> []
SomeController.require_information
=> nil
SomeController.require_information2
NoMethodError: undefined method `require_permissionsd' for SomeController:Class

如果有可能的话任何想法

更新:我不认为DSL很重要,因为它只处理权限,但这是DSL

module Something
  extend ActiveSupport::Concern

  included do
    class_attribute :data_information
    prepend_before_filter :verify_access
  end

  module ClassMethods
    def require_information &block
      self.data_information = []
      self.instance_eval &block if block_given?
    end

    def more_infomation *name, &block
      @data = []
      self.instance_eval &block if block_given?
      self.data_information << { name: name, data: @data.dup }
      @data.clear
    end

    def data *action, &block
      @data.push(action)
    end
  end

  def verify_access
    # Do stuff
    # I have access to data_information by self.class.data_information
  end
end
彼得·阿尔夫文

您可以通过以下方式访问数据:

SomeController.data_information

这将为您提供:

[{:name=>["Stuff"],
  :data=>
   [[:stuff_i_want_to_access, [:index]],
    [:more_stuff_i_want_to_access, [:edit]],
    [:more_stuff_i_want_to_access, [:show]]]}]

共享DSL实现非常重要,因为DSL实现告诉您信息存储在何处,其他人也可以看到它。您不需要共享DSL实现的唯一方法是,如果DSL在DSL本身中提供了一种机制来访问以前存储的信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法从这个障碍中获取信息

来自分类Dev

有没有办法从函数内部定义的变量中获取信息?

来自分类Dev

有没有办法从这个名称生成器导入结果?

来自分类Dev

有没有办法从网页上获取信息并将其显示在android应用上?

来自分类Dev

有没有办法从ajax预检请求中获取调试信息?

来自分类Dev

有没有办法从PlayFramework中的模型获取会话信息?

来自分类Dev

有没有办法从ajax预检请求中获取调试信息?

来自分类Dev

有没有办法使用私有 API 在 iOS 10+ 中获取 iPhone 充电器的信息?

来自分类Dev

有没有办法在读取时获取有关模块的信息?

来自分类Dev

有没有办法缩短这个变量的定义?

来自分类Dev

有没有办法缩短这个jQuery代码?

来自分类Dev

有没有办法改善这个要求?

来自分类Dev

有没有办法让这个 switch 语句更短?

来自分类Dev

有没有办法加速这个 VBA 代码?

来自分类Dev

有没有办法截断这个庞大的 IF/AND 语句?

来自分类Dev

有没有办法让这个按钮动画化?

来自分类Dev

有没有办法在Android中以编程方式获取最后一次通话的COST信息

来自分类Dev

有没有办法仅使用 Vue.js 在网站中“获取”类似 csv 的信息?

来自分类Dev

有没有办法用java获取wildfly配置的子系统信息?

来自分类Dev

有没有办法获取我的 Stack Exchange 统计信息?

来自分类Dev

有没有办法获取信封中文档的文件类型(无扩展名)?

来自分类Dev

有没有办法在 sql 中执行这个内部连接?

来自分类Dev

有没有更好的方法来从2个表中获取信息

来自分类Dev

有没有办法从列表中获取具有特定属性的所有项目

来自分类Dev

有没有办法在GDB中重置断点统计信息?

来自分类Dev

有没有办法限制Flutter中的堆栈跟踪信息

来自分类Dev

有没有办法查看查询中组的详细信息?

来自分类Dev

有没有办法在Selenium中处理HTML表单的弹出信息?

来自分类Dev

有没有办法获取持续录音的时间

Related 相关文章

  1. 1

    有没有办法从这个障碍中获取信息

  2. 2

    有没有办法从函数内部定义的变量中获取信息?

  3. 3

    有没有办法从这个名称生成器导入结果?

  4. 4

    有没有办法从网页上获取信息并将其显示在android应用上?

  5. 5

    有没有办法从ajax预检请求中获取调试信息?

  6. 6

    有没有办法从PlayFramework中的模型获取会话信息?

  7. 7

    有没有办法从ajax预检请求中获取调试信息?

  8. 8

    有没有办法使用私有 API 在 iOS 10+ 中获取 iPhone 充电器的信息?

  9. 9

    有没有办法在读取时获取有关模块的信息?

  10. 10

    有没有办法缩短这个变量的定义?

  11. 11

    有没有办法缩短这个jQuery代码?

  12. 12

    有没有办法改善这个要求?

  13. 13

    有没有办法让这个 switch 语句更短?

  14. 14

    有没有办法加速这个 VBA 代码?

  15. 15

    有没有办法截断这个庞大的 IF/AND 语句?

  16. 16

    有没有办法让这个按钮动画化?

  17. 17

    有没有办法在Android中以编程方式获取最后一次通话的COST信息

  18. 18

    有没有办法仅使用 Vue.js 在网站中“获取”类似 csv 的信息?

  19. 19

    有没有办法用java获取wildfly配置的子系统信息?

  20. 20

    有没有办法获取我的 Stack Exchange 统计信息?

  21. 21

    有没有办法获取信封中文档的文件类型(无扩展名)?

  22. 22

    有没有办法在 sql 中执行这个内部连接?

  23. 23

    有没有更好的方法来从2个表中获取信息

  24. 24

    有没有办法从列表中获取具有特定属性的所有项目

  25. 25

    有没有办法在GDB中重置断点统计信息?

  26. 26

    有没有办法限制Flutter中的堆栈跟踪信息

  27. 27

    有没有办法查看查询中组的详细信息?

  28. 28

    有没有办法在Selenium中处理HTML表单的弹出信息?

  29. 29

    有没有办法获取持续录音的时间

热门标签

归档