Итак ... У меня 3 модели.суммируя counter_caches
class Foo < ActiveRecord::Base
has_many :bars
end
class Bar < ActiveRecord::Base
belongs_to :foo
has_many :bazs
end
class Baz < ActiveRecord::Base
belongs_to :bar, counter_cache: true
end
Итак, я хотел бы столбец для моего Foo, который ведет себя как bars_count
, за исключением того, я хочу, чтобы добавить bazs_count
из Bar
вместе, вместо .size
. Должен ли я идти здесь вручную, с before_save
или что-то в этом роде? Есть ли что-то с этой функцией уже в Rails?
Итак, если есть 2 бара ... 1 имеет bazs_count = 4
, а другой - bazs_count = 8
. Если оба этих бара относятся к foo, я бы хотел иметь bars_count = 12
при изменении bazs_count
.
Причина в том, что ... Я часто проверяю, сколько баз имеет конкретное foo, и я бы хотел, чтобы запрос был минимальным.
nops, нет, вы должны сделать это вручную самостоятельно. –
k ... поэтому, когда 'counter_cache' обновляет панель, это фактически не сохраняет, поэтому мой вызов' after_save' на Bar не запускается. Если после этого я 'Bar.find (1) .save', то он правильно обновит Foo. Как это должно быть вызвано? – Dudo