我有下一个型号:
class Document < ActiveRecord::Base
has_many :sub_roles_documents, dependent: :destroy
has_many :sub_roles, through: :sub_roles_documents,class_name: '::SubRole'
end
class SubRole < ActiveRecord::Base
has_many :sub_roles_documents, dependent: :destroy
has_many :documents, through: :sub_roles_documents, class_name: '::Document'
end
class SubRolesDocument < ActiveRecord::Base
belongs_to :sub_role, counter_cache: :documents_count, touch: true
belongs_to :document, counter_cache: :sub_roles_count
end
当我使用嵌套参数删除某些文件的sub_roles时,计数器缓存sub_roles_count不会改变,但是当我向文档中添加新的sub_roles时,所有工作都正常。
如果我直接删除文档的子文件documents.sub_roles.delete(specific_sub_role)
- 它也可以正常工作。
在我的情况下,最好的方法是什么?
答案 0 :(得分:0)
我发现了一个问题,所有都写在文档中:
此选项可用于配置名为:counter_cache的自定义。当您在belongs_to关联上自定义:counter_cache的名称时,您只需要此选项。
在我的情况下,我必须写下:
class Document < ActiveRecord::Base
has_many :sub_roles_documents, dependent: :destroy, counter_cache: :documents_count
has_many :sub_roles, through: :sub_roles_documents,class_name: '::SubRole'
end
因为我使用自定义名称进行计数器缓存。