Как проверить, имеют ли какие-либо объекты одинаковые данные для одного и того же поля? - PullRequest
0 голосов
/ 26 июля 2011

Есть ли сладкая строка кода irb, которую можно проверить, если какой-либо из Object имеет одинаковые данные в своем поле?

Например, могу ли я посмотреть, если какой-либо из Object есть тот же адрес электронной почты?Или проверьте и посмотрите, не являются ли какие-либо объекты не уникальными?

1 Ответ

1 голос
/ 26 июля 2011

Вы можете попробовать это так:

Создайте хэш со всеми переменными экземпляра как пары ключ-значение, а затем сравните хэши:

Предположим, у вас есть два объекта a и b:

hash_a = a.instance_variables.inject({}){|res,v| res[v] = a.instance_variable_get(v); res }
hash_b = b.instance_variables.inject({}){|res,v| res[v] = b.instance_variable_get(v); res }

if hash_a == hash_b 
  puts "equal"
else
  puts "not equal"
end

Редактировать

Если вы говорите о Rails Models, то вам нужно это:

if a.attributes == b.attributes
  puts "equal"
end
...