У меня возникла следующая проблема:
У меня есть модель ActiveRecord с именем Widget, в которой есть несколько полей, мы будем называть их field_a и field_b, в дополнение к стандартным полям Rails. У меня также есть модель Person с множеством виджетов через ассоциацию has_many (Person.widgets).
В действии create моего контроллера для Widget я хочу проверить, чтобы убедиться, что новый Widget, который я создаю из параметров {@widget = Widget.new (params [: widget])}, не существует в Person Коллекция .widgets перед сохранением этого нового виджета в базу данных, но с использованием Person.widgets.include? (@ widget) не дает мне результатов, которые требуют, если field_a и field_b имеют те же значения, что и виджет в коллекции.
Я предполагаю, что это потому, что новый виджет (@widget) технически не существует в этой коллекции, потому что это новая запись, хотя ее важные атрибуты (field_a и field_b) могут совпадать с уже существующими в БД, связанной с пример личности.
Есть какие-нибудь мысли о том, как можно проверить это, чтобы я не создавал функционально дублированные виджеты в БД, связанные с одним и тем же экземпляром Person? Я пытался переопределить хэш, eql? и == методы на модели Widget, но это сломало некоторые другие вещи ... слава Богу, за TDD! : -)
Спасибо,
Mike