在ruby中重用自定义的“getter”

时间:2011-06-13 22:54:10

标签: ruby-on-rails ruby

我怎样才能做出这样的......更紧凑?

def token 
  if authorized?
    return t.token
  else
    raise Error('unauthorized!')
  end
end

def secret
  if authorized?
    return t.secret
  else
    raise Error('unauthorized!')
  end
end

目前感觉过度重复使用。

1 个答案:

答案 0 :(得分:4)

添加一个在调用token或secret方法之前运行的过滤器。

before_filter :check_authorization, :only => [ :token, :secret ]

然后添加一个方法,检查用户是否已获得授权,

def check_authorization
    if !authorized?
        raise DropboxError('User is not authorized')
    end
end

def token
    @token
end

def secret
    @secret
end

如果令牌和秘密已经是使用:attr_accessor或类似内容定义的模型的属性,则可以完全取消令牌和秘密方法,因为它们是没有逻辑的简单getter。