ghoshnirmalya/linkedin-rails

View on GitHub
app/controllers/v1/jobs_controller.rb

Summary

Maintainability
A
15 mins
Test Coverage
module V1
  class JobsController < ApplicationController
    before_action :set_job, only: [:show, :update, :destroy]

    # GET /jobs
    def index
      @jobs = Job.search(params[:search]).page(params[:page])

      render json: @jobs, include: "*"
    end

    # GET /jobs/1
    def show
      render json: @job
    end

    # POST /jobs
    def create
      @job = Job.new(job_params)

      if @job.save
        render json: @job, status: :created
      else
        render json: @job, status: :unprocessable_entity, serializer: ActiveModel::Serializer::ErrorSerializer
      end
    end

    # PATCH/PUT /jobs/1
    def update
      if @job.update(job_params)
        render json: @job
      else
        render json: @job, status: :unprocessable_entity, serializer: ActiveModel::Serializer::ErrorSerializer
      end
    end

    # DELETE /jobs/1
    def destroy
      @job.destroy
    end

    private

    # Use callbacks to share common setup or constraints between actions.
    def set_job
      @job = Job.find(params[:id])
    end

    # Only allow a trusted parameter "white list" through.
    def job_params
      params.require(:data)
        .require(:attributes)
        .permit(:title, :description, :company_id)
    end
  end
end