openapi-generator-cliでrubyファイルを生成すると、valid?
メソッドが生成されてnullチェックができるようになる。
ただし、このvalid?
は再帰的に見てくれるわけではなく、子インスタンスのvalid?
は自動で呼び出されるわけではない。
以下のような再帰関数を書くと、再帰的にvalidを呼び出せる。
module Validation def self.valid_recursive(obj) valid = true if obj.respond_to?(:valid?) valid &&= obj.valid? end obj.instance_variables.each do |var| value = obj.instance_variable_get(var) if value.is_a?(Array) value.each do |item| valid &&= valid_recursive(item) end elsif value.respond_to?(:valid?) valid &&= valid_recursive(value) end end valid end end