Если я хорошо понимаю, вы хотите отслеживать количество соединений между данным элементом и данным типом_коннектора, но не хотите иметь дубликаты объектов подключения в вашей базе данных?
Вы можете использовать обратные вызовы дляthis (код не тестировался)
# connection.rb
before_create :bc_callback
before_destroy :bd_callback
private
def before_create
if (existing_connection = self.find_by_element_id_and_connector_type_id(element_id, connector_type_id))
existing_connection.number++
existing_connection.save
return false # Do not create a new connection object
end
end
def before_destroy
number--
# If you still have 1 connection or more, the object won't be destroyed
if (number > 0)
save
return false
end
end
Однако я не уверен, что добавление тип_коннектора к элементу через отношение has_many, подобное этому:
@element.connector_types << @connector_type
вызовет созданиеновое соединение, если уже существует одно связывание этого элемента и этого типа соединителя ...