如何向该哈希添加“方法”?

oka*_*56k -1 hash ruby-on-rails oauth-2.0 omniauth ruby-on-rails-4

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

在此处输入图片说明

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

GoG*_*arl 6

您可以创建一个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
Run Code Online (Sandbox Code Playgroud)

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

token = AccessToken.new response_hash
Run Code Online (Sandbox Code Playgroud)

现在,您的对象不仅是Hash,而且是您的“超级哈希” AccessToken。您可以根据需要附加其他方法。

更进一步,您可以将其更改为采用“白名单”方法,在构造函数中采用 Hash,仅公开您希望通过方法向消费者公开的该 Hash 的元素,并删除 Hash 扩展。但是以上应该对你有用。