0

我有 3 个模型(Allen、Bob、Chris),它们与 Join 模型是多态的。和一个与连接模型连接的用户模型。

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

我的问题是如何在用户模型中为 Bob、Chris 和 Allen 编写计数器缓存

或者你可以在这里查看它:https ://gist.github.com/1350922

4

1 回答 1

0

我认为,没有标准的方法来实现这一点。将after_create回调添加到您的Allen,Bob并且Chris您将在其中获取User与此特定关联的所有 s的列表并手动Bob重新计算它们中的每一个。bobs_count

于 2012-03-14T10:53:16.600 回答