для двох масивів 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?