class Netfira::WebConnect::RackApp::Action::Version8::Records

Public Instance Methods

call() click to toggle source
# File lib/netfira/web_connect/rack_app/actions/version_8/records.rb, line 6
def call
  allow :delete
  purge!
end

Private Instance Methods

delete_handler_exists?() click to toggle source
# File lib/netfira/web_connect/rack_app/actions/version_8/records.rb, line 37
def delete_handler_exists?
  Netfira::WebConnect.handles_event? delete_handler_name
end
delete_handler_name() click to toggle source
# File lib/netfira/web_connect/rack_app/actions/version_8/records.rb, line 33
def delete_handler_name
  @destroy_handler_name ||= :"delete_#{path.first.underscore}"
end
purge!() click to toggle source
# File lib/netfira/web_connect/rack_app/actions/version_8/records.rb, line 13
def purge!
  raise NotFound unless path.count == 1 && Models.const_defined?(path.first)
  klass = Models.const_get(path.first)
  raise NotFound unless Class === klass && klass < Model::Record
  scope = klass.where shop_id: shop.id
  method = delete_handler_exists? ? :destroy_all : :delete_all
  event_args = [
      [:purge, shop, klass],
      [:"purge_#{path.first.underscore.pluralize}", shop]
  ]
  event_args.each { |args| dispatch_event [:before, :on], *args }
  dispatch_event(:around, *event_args.first) do
    dispatch_event(:around, *event_args.last) do
      scope.__send__ method
    end
  end
  event_args.each { |args| dispatch_event :after, *args }
  {}
end