Кэш Счетчика направляющих и его реализация

Я пытаюсь овладеть функцией кэша счетчика направляющих, но не способный схватить его полностью.

Скажем, то, что у Нас есть 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"}

Но это не помогает.

Спасибо

6
задан dombesz 4 January 2011 в 08:52
поделиться

1 ответ

Похоже, полиморфные ассоциации - это способ решить вашу проблему.

Представьте, что у вас есть модель комментариев и 2 модели, которые можно комментировать: сообщение и профиль.

В моделях сообщений и профилей:

has_many :comments, :as => :resource

В модели комментариев:

belongs_to :resource, :polymorphic => true, :counter_cache => true

Не забудьте добавить столбец «comments_count» как в модели профиля, так и в модели сообщений и вуаля!

15
ответ дан 8 December 2019 в 12:19
поделиться