Это хеш, содержащий больше хешей. Что вы можете сделать, так это получить доступ к car_documents_attributes
, выполнить итерацию этих хеш-значений и проверить, является ли какой-либо document_type
«контрактным»:
data = {
"car_documents_attributes" => {
"1562523330183" => { "id" => "", "filename" => "tyYYqHeqSFOnqLHEz5lO_rc_tispor12756_6wldwu.pdf", "document_type" => "contract"},
"1562523353208" => { "id" => "", "filename" => "a9P8TyECRiKbI2YdRVZy_rc_tispor12756_bbtzdz.pdf", "document_type" => "request" },
"1562523353496" => { "id" => "", "filename" => "WCM5FHOfSw6yNSUrfPPm_rc_tispor12756_dqu9r2.pdf", "document_type" => "notes" }
}
}
p data['car_documents_attributes'].any? { |_, doc| doc['document_type'] == 'contract' }
# true
Не знал, что это данные, поступающие из параметров. Если это так, вам нужно разрешить полученное или преобразовать параметры в небезопасный хеш.
Кроме того, вы можете попытаться использовать fetch
вместо []
при попытке получить car_documents_attributes
, потому что, если этот ключ отсутствует в data
, он выдаст nil
, что вызовет ошибку NoMethodError:
data.fetch('car_documents_attributes', []).any? { |_, doc| doc['document_type'] == 'contract' }