2014-01-17 4 views
4

Я пытаюсь достичь этого, когда пользователь удаляет свою учетную запись, все его действия также удаляются.Public_activity - Destroy Действия пользователя после отмены учетной записи

Я на Rails 4 - Придумайте - Общественная деятельность

Мой зарегистрирования Контроллер:

class RegistrationsController < Devise::RegistrationsController 

    # DELETE /resource 
    def destroy 
    resource.destroy 
    Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name) 
    set_flash_message :notice, :destroyed if is_flashing_format? 
    yield resource if block_given? 
    respond_with_navigational(resource){ redirect_to after_sign_out_path_for(resource_name) } 
    end 

end 

Чтобы уничтожить комментарии записи после того, как пользователь удалил свой комментарий я использовал:

@activity = PublicActivity::Activity.find_by_trackable_id(params[:id]) 
@activity.destroy 

Я ищу что-то подобное, только чтобы уничтожить все действия после отмены учетной записи.

Любое хорошее решение?

ответ

5

в User.rb добавить функцию обратного вызова:

before_destroy :delete_activities 

def delete_activities 
    acts = PublicActivity::Activity.where(owner_id: self.id, owner_type: "User") 
    acts.delete_all 
    end 
+0

работал как шарм. –

+0

Да .. Так я тоже думаю идти вперед. Не знаю другого лучшего способа, :) –

+0

Он также удаляет связанный объект? Например, у Пользователя есть много статей, у статей много комментариев, так что нам нужно написать обратный вызов для каждого объекта? (Предположим, что у всех моделей включена функция PublicActivity) –

Смежные вопросы