用于干扰资源访问的Ruby / Rails库

时间:2013-10-22 00:09:08

标签: ruby-on-rails ruby controller rack

Rails控制器操作中的常见模式是

  1. 获取资源
  2. 对资源执行某些操作(可选)
  3. 以序列化格式返回资源。
  4. 我正在寻找一个抽象出第一步的库,以便我的控制器操作可以假设资源已成功获取并避免检查异常情况。

    例如,这是一个假设的show操作:

    def show
      attrs   = params.slice(:handle, :provider)
      account = Account.find_by(attrs)
    
      if account
        respond_with account
      else
        head 404
      end
    end
    

    我想要的更像是这样:

    # controller
    def show
      respond_with resource
    end
    
    # some initializer (basically pseudocode)
    resource do |params|
      attrs = params.slice(:handle, :provider)
      Account.find_by(attrs)
    end
    

    如果find_by返回nil,库将处理返回404,如果提供的参数无效,则返回400(缺少:句柄键,包括额外的:id键等)。

    有谁知道提供这样的东西的图书馆?这是Application.routes之上的Rack中间件的一个很好的用例。

1 个答案:

答案 0 :(得分:2)

宝石platformatec/inherited_resources做了非常接近的事情。