From 48b48e88ac30b5b7092d0e5f9e75565cf183e851 Mon Sep 17 00:00:00 2001 From: Nishanth Vijayan Date: Fri, 11 Mar 2016 20:44:09 +0530 Subject: [PATCH] Add before_destroy :cancel to precent role destroy.Change Conference-Role association to have dependent: :destroy_all --- app/models/conference.rb | 3 ++- app/models/role.rb | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/models/conference.rb b/app/models/conference.rb index 6036a962..048da738 100644 --- a/app/models/conference.rb +++ b/app/models/conference.rb @@ -4,7 +4,8 @@ class Conference < ActiveRecord::Base require 'uri' serialize :events_per_week, Hash # Needed to call 'Conference.with_role' in /models/ability.rb - resourcify + # Dependent destroy will fail as roles#destroy will be cancelled,hence delete_all + resourcify :roles, dependent: :delete_all default_scope { order('start_date DESC') } diff --git a/app/models/role.rb b/app/models/role.rb index 07c5b29e..9673e700 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -1,10 +1,17 @@ class Role < ActiveRecord::Base belongs_to :resource, polymorphic: true has_and_belongs_to_many :users, join_table: :users_roles - + before_destroy :cancel scopify validates :name, presence: true validates :name, uniqueness: { scope: :resource } + + private + + # Needed to ensure that removing all user from role doesn't remove role. + def cancel + false + end end