Я пытаюсь овладеть функцией кэша счетчика направляющих, но не способный схватить его полностью.
Скажем, то, что у Нас есть 3 модели
B C
Принадлежание B или C в зависимости от поля key_type и key_id. key_type говорит, принадлежит ли A B или C поэтому, если key_type = "B" затем запись принадлежит B иначе, это принадлежит C.
В моей модели a.rb, я определил следующие ассоциации:
belongs_to :b, :counter_cache => true, :foreign_key => "key_id"
belongs_to :c, :counter_cache => true, :foreign_key => "key_id"
и
в b и c образцовых файлах
has_many :as , :conditions => {:key_type => "B"}
has_many :as , :conditions => {:key_type => "C"}
И B и Модели C имеют столбец как as_count
Проблемой является каждый раз, когда объект созданного количества увеличен в обоих модели b и c.
Любая справка ценится. Первоначально я думал, что это может работать:
belongs_to :b, :counter_cache => true, :foreign_key => "key_id", :conditions => {:key_type => "B"}
belongs_to :c, :counter_cache => true, :foreign_key => "key_id", :conditions => {:key_type => "C"}
Но это не помогает.
Спасибо
Похоже, полиморфные ассоциации - это способ решить вашу проблему.
Представьте, что у вас есть модель комментариев и 2 модели, которые можно комментировать: сообщение и профиль.
В моделях сообщений и профилей:
has_many :comments, :as => :resource
В модели комментариев:
belongs_to :resource, :polymorphic => true, :counter_cache => true
Не забудьте добавить столбец «comments_count» как в модели профиля, так и в модели сообщений и вуаля!