Skip to content
Snippets Groups Projects
Commit d2b3dc97 authored by Mauricio Giacomini Girardello's avatar Mauricio Giacomini Girardello
Browse files

adding review concern

parent eb7ea398
No related branches found
No related tags found
No related merge requests found
## This concern has all default resource methods for CRUD operations
## When you use it, be sure that +reviewable+ method is implemented in your controller, otherwise an fatal error will raise.
module ReviewableController
extend ActiveSupport::Concern
included do
before_action :set_review, only: [:show, :destroy, :rate]
before_action :authenticate_user!, only: [:create, :rate, :destroy]
end
# GET /v1/collections/1/reviews
def index
render json: Review.where(reviewable: reviewable)
end
# GET /v1/collections/1/reviews/1
def show
render json: @review
end
# POST /v1/learning_objects/1/reviews
# POST /v1/learning_objects/1/reviews.json
def create
review = reviewable.reviews.new(review_params.merge(user: current_user))
if review.save
render json: review, status: :created
else
render json: review.errors, status: :unprocessable_entity
end
end
# DELETE /v1/learning_objects/1/reviews/2
# DELETE /v1/learning_objects/1/reviews/2.json
def destroy
@review.destroy
render nothing: true, status: :ok
end
# User can rate the review to approve or not
# POST /v1/learning_objects/1/reviews/2/rate
# POST /v1/learning_objects/1/reviews/2/rate.json
def rate
approves = params[:approves].to_bool
rate = Rate.where(user: current_user, review: @review).first_or_initialize
if rate.update(approves: approves)
render json: rate, status: :ok
else
render json: rate.errors, status: :unprocessable_entity
end
end
protected
def reviewable
resource, id = request.path.split('/')[2, 3]
reviewable_model = resource.singularize.classify.constantize
@reviewable = reviewable_model.find(id)
end
# Never trust parameters from the scary internet, only allow the white list through.
def review_params
params.require(:review).permit(:name, :description, :pros, :cons)
end
def set_review
@review ||= Review.find(params[:id])
end
end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment