Сравните каждое значение двух ActiveRecords, возвращающих логическую переменную - PullRequest
4 голосов
/ 21 января 2011

Я использую Ruby on Rails 3, и у меня есть два объекта ActiveRecord одного и того же класса Account, как эти:

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

и

# Account2
<Account id: 2, name: "Test name 2", surname: "Test surname 2", email: "...", ...>

Как сравнить в нескольких строках кода каждый атрибут Account1 с соответствующими атрибутами Account2, чтобы проверить, равны ли значения? Я должен получить вывод «true», если все значения Account1 равны значениям Account2, в противном случае «false», даже если отличается только одно.

Ответы [ 2 ]

18 голосов
/ 21 января 2011
account1.attributes == account2.attributes

Там это довольно коротко. Обратите внимание, что идентификатор включен в эти атрибуты. Вы можете использовать .clone в обоих случаях, чтобы избежать этого, или исключить его из хеша атрибутов другим способом. Например:

account1.attributes.except('id') == account2.attributes.except('id')
1 голос
/ 21 января 2011
(account1.attributes.keys - ["id"]).inject(true) { |memo, att| memo && (account1[att] == account2[att]) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...