Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 比较返回布尔变量的两个ActiveRecords的每个值_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord_Compare - Fatal编程技术网

Ruby on rails 比较返回布尔变量的两个ActiveRecords的每个值

Ruby on rails 比较返回布尔变量的两个ActiveRecords的每个值,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,compare,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,Compare,我使用的是Ruby on Rails 3,我有两个相同类帐户的ActiveRecord对象,如下所示: # Account1 <Account id: 1, name: "Test name 1", surname: "Test surname 1", email: "...", ...> #科目1 及 #会计2 如何在几行代码中将Account1的每个属性与Account2的相应属性进行比较,以测试值是否相等?如果Account1的所有值都等于Account2的值,我应该收到

我使用的是Ruby on Rails 3,我有两个相同类帐户的ActiveRecord对象,如下所示:

# Account1
<Account id: 1, name: "Test name 1", surname: "Test surname 1", email: "...", ...>
#科目1

#会计2
如何在几行代码中将Account1的每个属性与Account2的相应属性进行比较,以测试值是否相等?如果Account1的所有值都等于Account2的值,我应该收到“true”输出,否则即使只有一个值不同,也会收到“false”输出

account1.attributes == account2.attributes
好了,很短。但是请注意,id包含在这些属性中。您可以在两者上都使用.clone来避免这种情况,或者以其他方式将其从属性哈希中排除。例如:

account1.attributes.except('id') == account2.attributes.except('id')

你似乎没有读过这两个答案。仅仅使用
@ar\u object1==@ar\u object2
并不能满足您的需要,因为它们是通过id而不是属性进行比较的。试着按照别人给你的建议去做(当然是我的第一个建议:-)Dho!我忘了带钥匙了。我的部分!Thanks@noodl我使用了这个,但它不起作用,因为它仍然在比较创建的字段和更新的字段,尽管很容易修复!
account1.attributes.except('id') == account2.attributes.except('id')
(account1.attributes.keys - ["id"]).inject(true) { |memo, att| memo && (account1[att] == account2[att]) }