#ruby-on-rails #ruby #activerecord #counter-cache
#ruby-on-rails #ruby #activerecord #кэш счетчика
Вопрос:
У меня есть 3 модели (Аллен, Боб, Крис), которые полиморфны с моделью объединения. и пользовательскую модель, которая соединяется с моделью объединения.
class Allen < ActiveRecord::Base
has_many :joins, :as => :resource
...
end
class Bob < ActiveRecord::Base
has_many :joins, :as => :resource
...
end
class Chris < ActiveRecord::Base
has_many :joins, :as => :resource
...
end
class Join < ActiveRecord::Base
belongs_to :initiator, :class_name => "User", :foreign_key => "user_id"
:counter_cache => "How to write with 3 different counter cache?"
belongs_to :resource, :polymorphic => true, :counter_cache => :resources_count
end
class User < ActiveRecord::Base
has_many :joins
has_many :allens, :through => :joins, :source => :initiator
has_many :initial_joins, :class_name => "Join"
end
Мой вопрос заключается в том, как записать кэш счетчика для Боба, Криса и Аллена в пользовательской модели
или вы можете ознакомиться с этим здесь:https://gist.github.com/1350922
Ответ №1:
Я думаю, стандартного способа добиться этого нет. Добавьте after_create
обратный вызов к вашему Allen
, Bob
и Chris
где вы получите список всех User
файлов, связанных с этим конкретным, Bob
и пересчитайте bobs_count
для каждого из них вручную.