如何检查任何对象是否具有相同字段的相同数据?

时间:2011-07-26 16:46:45

标签: ruby-on-rails unique irb

是否有一个可用的irb代码可以检查任何Object在其字段中是否有相同的数据?

例如,我是否可以查看Object中是否有任何相同的电子邮件?或者,检查并查看是否有任何对象不唯一?

1 个答案:

答案 0 :(得分:1)

你可以这样试试:

创建一个哈希,将所有实例变量作为键值对,然后比较哈希值:

假设您有两个对象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模型,那么您需要:

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