diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index b6966822..cedcf93b 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -33,6 +33,7 @@ module Admin def destroy @user = User.find(params[:id]) + @user.events.destroy_all @user.destroy redirect_to admin_users_path, notice: 'User got deleted' end diff --git a/app/models/user.rb b/app/models/user.rb index e8ab574a..8baa8c99 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -16,7 +16,7 @@ class User < ActiveRecord::Base :name, :email_public, :biography, :nickname, :affiliation has_many :event_users, dependent: :destroy - has_many :events, -> { uniq }, through: :event_users + has_many :events, -> { uniq }, through: :event_users, dependent: :destroy has_many :registrations, dependent: :destroy has_many :votes, dependent: :destroy has_many :voted_events, through: :votes, source: :events diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index ffbcb1c4..ad2eeb26 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -26,6 +26,11 @@ describe User do expect(user_with_all_roles.roles[2]).to eq(admin_role) end + it { should have_many(:events).dependent(:destroy) } + it { should have_many(:event_users).dependent(:destroy) } + it { should have_many(:registrations).dependent(:destroy) } + it { should have_many(:votes).dependent(:destroy) } + describe '#role?' do shared_examples '#role?' do |user, role, expected| it "returns #{expected} for #{role}" do