如何添加"方法"这个哈希?

时间:2016-04-28 23:28:23

标签: ruby-on-rails ruby-on-rails-4 hash oauth-2.0 omniauth

我正在编写自定义OAuth2策略。我需要在哈希响应中添加expired?方法,我不知道该怎么做。我得到的回复给了我一个时间,直到到期,但不是过期的方法本身。

enter image description here

我需要添加一个过期的?方法,不知道如何。有什么帮助吗?

1 个答案:

答案 0 :(得分:4)

您可以在build_access_token中创建一个扩展它的新类,而不是直接使用Hash。

class AccessToken < Hash

  def initialize response_hash
    # This overrides the default behavior, you don't care here.
    # But if you do, just remove this and call merge manually.
    self.merge!(response_hash)
  end

  def expired?
    # return true if expired, false otherwise
  end

end

然后,在build_access_token中,执行以下操作:

token = AccessToken.new response_hash

现在,您的对象不只是Hash,而是您的&#34;超级哈希&#34; AccessToken。您可以根据需要附加其他方法。

更进一步,您可以将其更改为&#34;白名单&#34;方法,在构造函数中使用Hash,仅暴露要通过方法向消费者公开的Hash元素,并删除Hash扩展。但是上面应该是你现在做的。