Rubyの簡単なサンプル
arr = [
{ name: "hoge1", age: 10 },
{ name: "hoge2", age: 13 },
{ name: "hoge3", age: 15 },
{ name: "hoge4", age: nil }
]
arr.min_by{ |e| e[:age] }
=> ArgumentError (comparison of NilClass with 10 failed)
ブロックの戻り値に<=>で比較できないものが混じっていると例外ArgumentError min_by (Enumerable) - Rubyリファレンス
とのこと
解決法
nilの扱いによって対応が変わるかと思います
nilを最小値とする場合
nilがあれば取得、無ければmin_byで最小値を取得
arr.find { |e| e[:age].nil? } || arr.min_by { |e| e[:age] }
=> {:name=>"hoge4", :age=>nil}
nilを除外して最小値を取得する場合
rejectでnilを除外してから、min_byで最小値を取得
arr.reject { |e| e[:age].nil? }.min_by { |e| e[:age] }
=> {:name=>"hoge1", :age=>10}