Module: Sequel::Plugins::Cascading

Defined in:
lib/sequel_cascading.rb

Class Method Summary collapse

Class Method Details

.apply(model, options = {}) ⇒ Object



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