Add before_destroy :cancel to precent role destroy.Change Conference-Role association to have dependent: :destroy_all

This commit is contained in:
Nishanth Vijayan 2016-03-11 20:44:09 +05:30
parent 2df6d1039f
commit 48b48e88ac
2 changed files with 10 additions and 2 deletions

View file

@ -4,7 +4,8 @@ class Conference < ActiveRecord::Base
require 'uri' require 'uri'
serialize :events_per_week, Hash serialize :events_per_week, Hash
# Needed to call 'Conference.with_role' in /models/ability.rb # 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') } default_scope { order('start_date DESC') }

View file

@ -1,10 +1,17 @@
class Role < ActiveRecord::Base class Role < ActiveRecord::Base
belongs_to :resource, polymorphic: true belongs_to :resource, polymorphic: true
has_and_belongs_to_many :users, join_table: :users_roles has_and_belongs_to_many :users, join_table: :users_roles
before_destroy :cancel
scopify scopify
validates :name, presence: true validates :name, presence: true
validates :name, uniqueness: { scope: :resource } validates :name, uniqueness: { scope: :resource }
private
# Needed to ensure that removing all user from role doesn't remove role.
def cancel
false
end
end end