Module: CrudActions::Actions

Extended by:
ActiveSupport::Concern
Includes:
ActionsHelper, BaseHelper
Defined in:
lib/crud_actions/actions.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

DEFAULT_ACTIONS =
[:index, :new, :create, :edit, :update, :show, :destroy]

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ActionsHelper

#index_helper

Class Method Details

.included(class_name) ⇒ Object



13
14
15
16
17
# File 'lib/crud_actions/actions.rb', line 13

def self.included(class_name)
  model_name = class_name.to_s.split('Controller').first.split('::').last.singularize
  class_name.instance_variable_set('@resource_class', model_name.constantize)
  class_name.instance_variable_set('@resource_name', model_name.underscore)
end

Instance Method Details

#create(options = { notice: nil, alert: nil }) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/crud_actions/actions.rb', line 35

def create(options = { notice: nil, alert: nil })
  resource_name = self.class.instance_variable_get('@resource_name')
  resource_class = self.class.instance_variable_get('@resource_class')
  instance_variable_set("@#{ resource_name }", resource_class.new(permitted_params_for_create))
  resource = instance_variable_get("@#{ resource_name }")
  if resource.public_send(:save)
    flash[:notice] = options[:notice] || "#{ resource_class.to_s } created successfully."
    redirect_to (options[:redirect_to] || path_maker)
  else
    flash[:alert] = options[:alert] || resource.errors.full_messages.join(', ')
    render action: :new
  end
end

#destroy(options = { notice: nil, alert: nil }) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/crud_actions/actions.rb', line 68

def destroy(options = { notice: nil, alert: nil })
  resource_name = self.class.instance_variable_get('@resource_name')
  resource_class = self.class.instance_variable_get('@resource_class')
  resource = instance_variable_get("@#{ resource_name }")
  if resource.public_send(:destroy)
    flash[:notice] = options[:notice] || "#{ resource_class.to_s } destroyed successfully."
  else
    flash[:alert] = options[:alert] || resource.errors.full_messages.join(', ')
  end
  redirect_to (options[:redirect_to] || path_maker)
end

#editObject



49
50
# File 'lib/crud_actions/actions.rb', line 49

def edit
end

#index(options = { order: nil, includes: nil }) ⇒ Object



26
27
28
# File 'lib/crud_actions/actions.rb', line 26

def index(options = { order: nil, includes: nil })
  index_helper(controller_name, options)
end

#newObject



30
31
32
33
# File 'lib/crud_actions/actions.rb', line 30

def new
  resource_name = self.class.instance_variable_get('@resource_name')
  instance_variable_set("@#{ resource_name }", self.class.instance_variable_get('@resource_class').new)
end

#showObject



52
53
# File 'lib/crud_actions/actions.rb', line 52

def show
end

#update(options = { notice: nil, alert: nil }) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/crud_actions/actions.rb', line 55

def update(options = { notice: nil, alert: nil })
  resource_name = self.class.instance_variable_get('@resource_name')
  resource_class = self.class.instance_variable_get('@resource_class')
  resource = instance_variable_get("@#{ resource_name }")
  if resource.public_send(:update, permitted_params_for_update)
    flash[:notice] = options[:notice] || "#{ resource_class.to_s } updated successfully."
    redirect_to (options[:redirect_to] || path_maker)
  else
    flash[:alert] = options[:alert] || resource.errors.full_messages.join(', ')
    render action: :edit
  end
end