Если я изменю ассоциации своей модели через настройку коллекции, ни мой after_destroy, ни мои обратные вызовы after_remove не сработают.
if image_params[:tags]
@image.tags = image_params[:tags].map { |tag|
Tag.create(title: tag) unless Tag.where(title: tag).exists?
Tag.find_by(title: tag)
}
end
class TagRelation < ApplicationRecord
belongs_to :tag
belongs_to :taggable, polymorphic: true
# Destroy tag if no other items are related
after_destroy do
self.tag.check_count
end
end
class Tag < ApplicationRecord
has_many :tag_relations, dependent: :destroy, after_remove: :check_count
has_many :gallery_images, through: :tag_relations, source_type: 'GalleryImage', source: :taggable
has_many :streams, through: :tag_relations, source_type: 'Stream', source: :taggable
validates :title, uniqueness: true
def count
self.tag_relations.count
end
def check_count
self.destroy if self.count === 0
end
end
Что я могу сделать, чтобы эта работа работала?