Ruby on rails 如何将“方法”添加到此哈希?

Ruby on rails 如何将“方法”添加到此哈希?,ruby-on-rails,ruby-on-rails-4,hash,oauth-2.0,omniauth,Ruby On Rails,Ruby On Rails 4,Hash,Oauth 2.0,Omniauth,我正在编写一个自定义OAuth2策略。我需要添加一个过期的?方法调用哈希响应,我不确定如何执行。我得到的响应给了我一个直到过期的时间,但不是过期的方法本身 我需要添加一个过期的?方法,不知道如何。有什么帮助吗?您可以在build\u access\u令牌中创建一个新类来扩展它,而不是直接使用散列 class AccessToken < Hash def initialize response_hash # This overrides the default behavior

我正在编写一个自定义OAuth2策略。我需要添加一个过期的?方法调用哈希响应,我不确定如何执行。我得到的响应给了我一个直到过期的时间,但不是过期的方法本身


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

您可以在build\u access\u令牌中创建一个新类来扩展它,而不是直接使用散列

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
现在,您的对象不仅仅是散列,而是超级散列AccessToken。您可以根据需要附加其他方法


接下来,您还可以将其更改为采用白名单方法,在构造函数中采用哈希,只公开希望通过方法向使用者公开的哈希元素,并删除哈希扩展。但是以上内容现在应该可以了。

lib/strategies/canvas.rb是您的代码,还是您正在使用的库/gem?这是我的代码。这是一个没有文档的自定义策略,因此非常有趣,请参见下面的我的答案来回答您的直接问题,但是,也就是说,您也可以编写一个函数,如def token_expired?access_token并在该行调用它,比如如果token_expired?access_token。省去了上课的麻烦。但是,我认为根据你所做的,也许这门课会在今后派上用场。没问题。注意,我添加了一个构造函数方法,使其正确地包装散列并合并响应\u散列。如果您愿意的话,这也可以采用我在后面提到的白名单方法。快乐编码!
token = AccessToken.new response_hash