私はOpenStructのサブクラス(またはそのことについては、クラス)、またはハッシュは、カスタム例外の場合が発生しますように、それを作る方法を把握しようとしている内に存在しない属性にアクセス私は設定されていない属性にアクセスしようとしています。私はこれを行うにはdefine_method
とmethod_missing
を得ることができなかったので、私はそれがどのようにRubyで行われるべきであるかわからない。レイズ例外OpenStruct
はここに例を示します
class Hash
# if trying to access key:
# 1) key exists, return key
# 2) key doesn't exist, raise exception
end
編集:例外を発生させてはならない存在属性
class Request < OpenStruct...
request = Request.new
begin
request.non_existent_attr
rescue CustomError...
私はそれがこのようなものでなければならないであろうと想像できます。私が探している機能は、属性に自由にアクセスできるだけなので、存在しない場合はカスタム例外が発生します。
ここで '[]'を上書きするのではなく、 'fetch'メソッドを使うことができます。 http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-fetch –