ассоциации ruby ​​on rails - удаление чего-то, чего нет в ассоциации - PullRequest
0 голосов
/ 15 июня 2011

Итак, у меня есть модель 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

Спасибо.

1 Ответ

0 голосов
/ 15 июня 2011

Почему бы просто не использовать Foo.bar.count

Возможно, я неправильно понимаю, что именно вы рассчитываете, но похоже, что вы пытаетесь дублировать функции подсчета уже в ActiveRecord.

Этот вопрос также может быть связан с кэшированием БД в Rails.

...