我有一个论坛模型,其中有很多讨论。每个讨论都有很多帖子。讨论或多或少只是帖子对象的集合。
现在,我想在论坛中为该论坛讨论中包含的帖子提供一个 counter_cache。
所以真的,似乎我应该使用一个:through
关联而不是两个单独的关联来完成这个。
但是,我找不到任何建议混合使用 has_many :through 和 has_one :through 关联的参考,仅适用于一对一和多对多,而不适用于一对多。
class Forum < ActiveRecord::Base
has_many :discussions
has_many :posts, :through => :discussions
end
class Post < ActiveRecord::Base
belongs_to :discussion
has_one :forum, :through => discussion
end
class Discussion < ActiveRecord::Base
has_many :posts
belongs_to :forum
end
像上面那样可取,还是我应该手动处理计数器缓存?