Skip to content

Instantly share code, notes, and snippets.

@nafidurmus
Created July 27, 2019 13:33
Show Gist options
  • Save nafidurmus/9e9d0023a9f474f1ac1d4062a6e0539c to your computer and use it in GitHub Desktop.
Save nafidurmus/9e9d0023a9f474f1ac1d4062a6e0539c to your computer and use it in GitHub Desktop.
module Api::V1
class UsersController < ApplicationController
before_action :authorize_request, except: [:create, :show, :index, :destroy, :update]
# GET /users
def index
@users = User.all
render json: @users, status: :ok
end
# GET /users/{username}
def show
@user = User.find_by_username(params[:username])
@user ? (render json: @user) : (render json: { errors: 'User not found' })
end
# POST /users
def create
@user = User.new(user_params)
if @user.save
render json: @user, status: :created
else
render json: { errors: @user.errors.full_messages },
status: :unprocessable_entity
end
end
# PUT /users/{username}
def update
@user = User.find_by_username(params[:username])
unless @user&.update(user_params)
render json: { errors: 'User not found' }, status: :not_found
end
render json: @user
end
# REMOVE /users/{username}
def destroy
@user = User.find_by_username(params[:username])
unless @user&.destroy
render json: { errors: 'User not found' }, status: :not_found
end
render json: { notice: 'User was successfully destroyed' }
end
private
def find_user
@user = User.find_by_username!(params[:_username])
rescue ActiveRecord::RecordNotFound
render json: { errors: 'User not found' }, status: :not_found
end
def user_params
params.permit(:name, :username, :email, :password, :password_confirmation)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment