Я использую ActiveAdmin для бэк-офиса моего приложения, и у меня есть эти три модели:
class Organization
has_many :organization_collection_relations
has_many :collections, through: :organization_collection_relations
end
class OrganizationCollectionRelation
belongs_to :organization
belongs_to :collection
after_destroy :do_something
end
class Collection
has_many :organization_collection_relations
has_many :organizations, through: :organization_collection_relations
end
На моей странице редактирования для Organization
у меня есть и f.input :collections
.Проблема возникает, когда я редактирую и упорядочиваю и, например, удаляю все коллекции.Метод обратного вызова after_destroy
do_something
не запускается.Поэтому я должен сделать обходной путь в секции контроллера активного админ-файла.
controller do
def update
resource = Organization.find(params[:id])
former_ids = resource.collection_ids
super
new_ids = resource.reload.collection_ids
# my logic here
end
end
Я думаю, что есть лучший способ справиться с этим ...