Rieles 4: counter_cache en has_many: mediante asociación con dependiente:: destroy

Aunque ya se han hecho preguntas similares:

counter_cache con has_many: a través dedependiente => destruir en una asociación "has_many through"has_many: a través de counter_cache

ninguno de ellos aborda mi problema.

Tengo tres modelos, con un has_many: a través de la asociación:

class User < ActiveRecord::Base
  has_many :administrations
  has_many :calendars, through: :administrations
end

class Calendar < ActiveRecord::Base
  has_many :administrations
  has_many :users, through: :administrations
end

class Administration < ActiveRecord::Base
  belongs_to :user
  belongs_to :calendar
end

El modelo de administración de unión tiene los siguientes atributos:

id
user_id
calendar_id
role

Me gustaría contar cuantoscalendars cadauser tiene y cuantosusers cadacalendar tiene.

Iba a ir con counter_cache de la siguiente manera:

class Administration < ActiveRecord::Base
  belongs_to :user, counter_cache: :count_of_calendars
  belongs_to :calendar, counter_cache: :count_of_users
end

(y, por supuesto, las migraciones correspondientes para agregar:count_of_calendars alusers mesa y:count_of_users alcalendars mesa.)

Pero entonces, me topé conesta advertencia en Rails Guides:

4.1.2.4: dependiente

Si configura la opción: dependiente en:

: destruir, cuando el objeto se destruye, se llamará destruir a sus objetos asociados.: eliminar, cuando el objeto se destruye, todos sus objetos asociados se eliminarán directamente de la base de datos sin llamar a su método de destrucción.

No debe especificar esta opción en una asociación belong_to que está conectada con una asociación has_many en la otra clase. Hacerlo puede generar registros huérfanos en su base de datos.

Por lo tanto, ¿cuál sería una buena práctica contar cuántoscalendars cadauser tiene y cuantosusers cadacalendar ¿tiene?

Respuestas a la pregunta(1)

Su respuesta a la pregunta