module Godmin::Resources::ResourceController

Public Instance Methods

create() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 44
def create
  respond_to do |format|
    if @resource_service.create_resource(@resource)
      format.html { redirect_to redirect_after_create, notice: redirect_flash_message }
      format.json { render :show, status: :created, location: @resource }
    else
      format.html { render :edit }
      format.json { render json: @resource.errors, status: :unprocessable_entity }
    end
  end
end
destroy() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 68
def destroy
  @resource_service.destroy_resource(@resource)

  respond_to do |format|
    format.html { redirect_to redirect_after_destroy, notice: redirect_flash_message }
    format.json { head :no_content }
  end
end
edit() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 42
def edit; end
index() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 25
def index
  respond_to do |format|
    format.html
    format.json
    format.csv
  end
end
new() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 40
def new; end
show() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 33
def show
  respond_to do |format|
    format.html
    format.json
  end
end
update() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 56
def update
  respond_to do |format|
    if @resource_service.update_resource(@resource, resource_params)
      format.html { redirect_to redirect_after_update, notice: redirect_flash_message }
      format.json { render :show, status: :ok, location: @resource }
    else
      format.html { render :edit }
      format.json { render json: @resource.errors, status: :unprocessable_entity }
    end
  end
end

Protected Instance Methods

redirect_after_create() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 164
def redirect_after_create
  redirect_after_save
end
redirect_after_destroy() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 176
def redirect_after_destroy
  [*@resource_parents, resource_class.model_name.route_key.to_sym]
end
redirect_after_save() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 172
def redirect_after_save
  [*@resource_parents, @resource]
end
redirect_after_update() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 168
def redirect_after_update
  redirect_after_save
end
redirect_flash_message() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 180
def redirect_flash_message
  translate_scoped("flash.#{action_name}", resource: @resource.class.model_name.human)
end
resource() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 135
def resource
  if params[:id]
    @resource_service.find_resource(params[:id])
  else
    case action_name
    when "create"
      @resource_service.build_resource(resource_params)
    when "new"
      @resource_service.build_resource(nil)
    end
  end
end
resource_class() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 119
def resource_class
  @resource_service.resource_class
end
resource_params() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 148
def resource_params
  params.require(@resource_class.model_name.param_key.to_sym).permit(resource_params_defaults)
end
resource_params_defaults() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 152
def resource_params_defaults
  @resource_service.attrs_for_form.map do |attribute|
    association = @resource_class.reflect_on_association(attribute)

    if association && association.macro == :belongs_to
      association.foreign_key.to_sym
    else
      attribute
    end
  end
end
resource_parents() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 123
def resource_parents
  params.to_unsafe_h.each_with_object([]) do |(name, value), parents|
    if name =~ /(.+)_id$/
      parents << $1.classify.constantize.find(value)
    end
  end
end
resource_service() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 105
def resource_service
  resource_service = resource_service_class.new

  if authentication_enabled?
    resource_service.options[:admin_user] = admin_user
  end

  if resource_parents.present?
    resource_service.options[:resource_parent] = resource_parents.last
  end

  resource_service
end
resource_service_class() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 101
def resource_service_class
  "#{controller_path.singularize}_service".classify.constantize
end
resources() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 131
def resources
  @resource_service.resources(params)
end
set_resource() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 96
def set_resource
  @resource = resource
  authorize(@resource) if authorization_enabled?
end
set_resource_class() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 83
def set_resource_class
  @resource_class = resource_class
end
set_resource_parents() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 87
def set_resource_parents
  @resource_parents = resource_parents
end
set_resource_service() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 79
def set_resource_service
  @resource_service = resource_service
end
set_resources() click to toggle source
# File lib/godmin/resources/resource_controller.rb, line 91
def set_resources
  @resources = resources
  authorize(@resources) if authorization_enabled?
end