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