diff --git a/app/controllers/v1/reviews_controller.rb b/app/controllers/v1/reviews_controller.rb index 189d6a2a86dfc110678b32077feb32db8cf832f9..136adbc0fcb2257809be01d2b86fb6aced7bd1fd 100644 --- a/app/controllers/v1/reviews_controller.rb +++ b/app/controllers/v1/reviews_controller.rb @@ -2,8 +2,8 @@ class V1::ReviewsController < ApplicationController include ::DeletedObjectsController include ::ResourceModel - before_action :set_review, only: [:show, :destroy, :rate] - before_action :authenticate_user!, only: [:create, :rate, :destroy] + before_action :set_review, only: [:show, :destroy, :rate, :update] + before_action :authenticate_user!, only: [:create, :rate, :destroy, :update] # GET /v1/collections/1/reviews def index @@ -29,6 +29,26 @@ class V1::ReviewsController < ApplicationController end end + # PUT /v1/learning_objects/1/reviews/1 + # PUT /v1/learning_objects/1/reviews/1.json + def update + ratings_params = review_params + rp = ratings_params.delete(:review_ratings_attributes) + if @review.update(ratings_params) + @review.review_ratings.each do |r| + rp.each do |s| + if r.rating_id == s[:rating_id] + r.value = s[:value] + r.save + end + end + end + render json: @review, status: :ok + else + render json: @review.errors, status: :unprocessable_entity + end + end + def process_creation(review) # Store errors errors = [] diff --git a/config/routes.rb b/config/routes.rb index 28bc740e66572e7cc3a4cdca51901032d2fe894c..c79ff197ec8a3f4249527e1024b4a19e39de901f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -30,7 +30,7 @@ Rails.application.routes.draw do end concern :reviewable do - resources :reviews, only: [:index, :create, :destroy], concerns: :deletable do + resources :reviews, only: [:index, :create, :update, :destroy], concerns: :deletable do member do post :rate end