Callback after_destroy не запускается через ActiveAdmin - PullRequest
0 голосов
/ 10 октября 2018

Я использую 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

Я думаю, что есть лучший способ справиться с этим ...

1 Ответ

0 голосов
/ 10 октября 2018

Active Admin также имеет свои собственные функции обратного вызова, поэтому вы можете использовать, как показано ниже, в файле organization.rb в папке администратора.

  after_destroy do |organization|
    # do your stuff
  end

Я сделал это ранее для before_save и after_save. Я не уверен, доступна ли она для after_destroy или нет, вы можете проверить здесь больше об активных обратных вызовах администратора.

...