Rails 4: counter_cache в has_many: через ассоциацию с зависимым:: destroy

Хотя подобные вопросы уже задавались:

counter_cache с has_many: череззависимый => уничтожить ассоциацию "has_many through"has_many: через counter_cache

никто из них на самом деле не решает мою проблему.

У меня есть три модели, с ассоциацией has_many: through:

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

Модель администрирования объединения имеет следующие атрибуты:

id
user_id
calendar_id
role

Я хотел бы посчитать, сколькоcalendars каждыйuser есть и сколькоusers каждыйcalendar есть.

Я собирался пойти с counter_cache следующим образом:

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

(и, конечно, соответствующие миграции, чтобы добавить:count_of_calendars кusers стол и:count_of_users кcalendars Таблица.)

Но потом я наткнулся наэто предупреждение в Rails Guides:

4.1.2.4: зависимый

Если вы установите параметр: зависимый к:

: destroy, когда объект уничтожается, разрушение будет вызываться для связанных с ним объектов.: delete, когда объект уничтожается, все связанные с ним объекты будут удаляться напрямую из базы данных без вызова метода уничтожения.

Вы не должны указывать эту опцию в ассоциации own_to, которая связана с ассоциацией has_many в другом классе. Это может привести к появлению осиротевших записей в вашей базе данных.

Поэтому, что было бы хорошей практикой посчитать, сколькоcalendars каждыйuser есть и сколькоusers каждыйcalendar есть?

Ответы на вопрос(1)

Ваш ответ на вопрос