для двух массивов A и B: A и B имеют одинаковое содержимое, если:
(A-B).blank? and (B-A).blank?
или вы можете просто проверить:
((A-B) + (B-A)).blank?
Также, как было предложено @ cort3z, это решение als0 работает для полиморфных массивов, т.е.
A = [1 , "string", [1,2,3]]
B = [[1,2,3] , "string", 1]
(A-B).blank? and (B-A).blank? => true
::::::::::: РЕДАКТИРОВАТЬ :::::::::::::
Как было предложено в комментариях, приведенное выше решение не работает для дубликатов, хотя по вопросу, который даже не требуется, поскольку запрашивающий не интересуется дубликатами (он преобразует свои массивы в набор перед проверкой и маскирует дубликаты, и даже если вы посмотрите на принятый ответ он использует оператор .uniq перед проверкой, и это тоже маскирует дубликаты.). Но все же, если вас интересуют дубликаты, просто добавление проверки количества исправит то же самое (в соответствии с вопросом только один массив может содержать дубликаты). Итак, окончательное решение будет таким:
A.size == B.size and ((A-B) + (B-A)).blank?