2014-01-22 4 views
0

У меня возникают проблемы с Rspec и ActiveRecord :: Base. Я хочу проверить, правильно ли мой парсер правильно создает экземпляры модели.Переопределение ActiveRecord :: Base == operator - хорошая идея?

Я попытался сравнить новые объекты с новыми объектами, но выяснил, что это не сработает. Затем я попытался сохранить объекты, но это тоже не решение, потому что, если я создам также ожидаемые экземпляры модели, то идентификаторы будут отличаться.

Я прибегал к переопределению оператора ==, чтобы соответствовать всем моим полям, без идентификатора. Тем не менее, я считаю, что это нехорошее решение.

Каков правильный способ решения этой проблемы?

+0

Моя догадка заключается в том, что тонна вещей, внутренних для ActiveRecord, будет катастрофически ломаться. –

ответ

3

Лично я считаю, что это плохая идея. Как бы вы решили проверить чистое равенство?

Я бы написал (или нашел через google) rspec-matcher, называемый «match_attributes», который сравнивал бы список атрибутов каждого объекта, и если бы они были идентичны, верните true.

+0

Кажется, что такой помощник действительно способ пойти. Нашел этот вопрос [link] (http://stackoverflow.com/questions/4763983/comparing-activerecord-objects-with-rspec), и его ответ оказался полезным. Спасибо за ваш вклад! – Lasooch

+0

@ Lasooch Это именно то, что вы хотите! Милая. –

Смежные вопросы