4
5
6
7
8
9
10
11
12
13
14
|
# File 'lib/sequel_cascading.rb', line 4
def self.apply(model, options = {})
Array(options[:destroy]).each do |assoc|
model.instance_eval "def before_destroy; super; #{assoc}_dataset.destroy; end"
end
Array(options[:nullify]).each do |assoc|
model.instance_eval "def before_destroy; super; remove_all_#{assoc}; end"
end
Array(options[:restrict]).each do |assoc|
model.instance_eval "def before_destroy; super; raise Error::InvalidOperation, 'Delete would orphan associated #{assoc}' unless #{assoc}_dataset.empty?; end"
end
end
|