module Activatable::InstanceMethods

Public Instance Methods

activate(success_block = nil) click to toggle source
# File lib/rails_core_extensions/activatable.rb, line 17
def activate(success_block = nil)
  resource.active = params[:active].presence || false
  action = resource.active ? 'activate' : 'inactivate'

  resource.save!

  success_block ||= -> {
    flash[:success] = "#{resource} #{action}d"
    redirect_to(collection_path)
  }

  success_block.call

rescue ActiveRecord::ActiveRecordError => e
  resource.errors.add(:base, "Failed to #{action}: " + e.message)
  flash[:error] = resource.errors.full_messages.to_sentence
  redirect_to(collection_path)
end