Попробуйте, вот так полегче читается, вроде:
def check_docs(docs)
return false unless docs.present?
hash = {}
docs.each do |doc|
name = doc.original_filename.split('.').last
hash['pictures'] << doc if pic(name) != false and hash['pictues'] ||= []
hash['docs'] << doc if doc(name) != false and hash['docs'] ||= []
end
hash.presence
end
Разве что, две оговорки:
1. Первая и последняя строчка подразумевают, что используется Rails (ну, или хотябы ActiveSupport)
2. Если hash будет пустой, вернется не false, а nil
P.S. Кстати, какая-то плохая идея в блоке each использовать переменную doc и там же обращаться к какому-то методу doc() (с одинаковыми именами)