シーケンスで呼び出す必要があるクラスにいくつかのインスタンス メソッドがあります。シーケンス内のいずれかのメソッドが失敗すると、前のメソッドを再度呼び出す必要があります。成功した各メソッド呼び出しの結果をクラス変数に格納しています。
class User
@@auth_hash = {}
def get_auth_token
result = MyApi.get_new_auth_token(self) if @@auth_hash[self]['auth_token'].blank?
if result['Errors']
raise Exception, "You must reauthorize against the external application."
else
@@auth_hash[self]['auth_token'] = result['auth_token']
end
@@auth_hash[self]['auth_token']
end
def get_session_id
result = MyApi.get_new_session_id if @@auth_hash[self]['session_id'].blank?
if result['Errors']
get_auth_token
# Recursion
get_session_id
else
@@auth_hash[self]['session_id'] = result['session_id']
end
@@auth_hash[self]['session_id']
end
end
これらの条件を取り除きたいのですが、返されたハッシュにエラーがある場合にのみブロックを実行する方法がわかりません。