Итак, у меня есть модель foo, у которой есть_and_belongs_to_many bar.
foo.bar дает мне все столбцы, связанные с foo. Каждый раз, когда я удаляю бар, я вызываю Foo.decrement_counter (: bar_count, self [: id]) через обратный вызов: after_remove.
Я тестирую удаление бара, который не связан с foo. Это тоже уменьшает счетчик ... который я не хочу. Как я могу гарантировать, что счетчик уменьшается только тогда, когда столбец действительно удален из ассоциации?
has_and_belongs_to_many :bar, :after_remove => :dec_bar_count, :after_add => :inc_bar_count, :uniq => true
def dec_bar_count(record)
Foo.decrement_counter(:bar_count, self[:id])
end
Спасибо.