class Spree::Api::FeedbackReviewsController
Public Instance Methods
create()
click to toggle source
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 14 def create if @review.present? @feedback_review = @review.feedback_reviews.new(feedback_review_params) @feedback_review.user = @current_api_user @feedback_review.locale = I18n.locale.to_s if Spree::Reviews::Config[:track_locale] end authorize! :create, @feedback_review if @feedback_review.save render json: @feedback_review, status: :created else invalid_resource!(@feedback_review) end end
destroy()
click to toggle source
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 39 def destroy authorize! :destroy, @feedback_review if @feedback_review.destroy render json: @feedback_review, status: :ok else invalid_resource!(@feedback_review) end end
update()
click to toggle source
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 29 def update authorize! :update, @feedback_review if @feedback_review.update(feedback_review_params) render json: @feedback_review, status: :ok else invalid_resource!(@feedback_review) end end
Private Instance Methods
feedback_review_params()
click to toggle source
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 55 def feedback_review_params params.require(:feedback_review).permit(permitted_feedback_review_attributes) end
find_review_user()
click to toggle source
Finds user based on api_key or by user_id if api_key belongs to an admin.
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 60 def find_review_user if params[:user_id] && @current_user_roles.include?('admin') @current_api_user = Spree.user_class.find(params[:user_id]) end end
load_feedback_review()
click to toggle source
Loads the feedback_review
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 72 def load_feedback_review @feedback_review = Spree::FeedbackReview.find(params[:id]) end
load_review()
click to toggle source
Loads any review that is shared between the user and product
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 67 def load_review @review = Spree::Review.find(params[:review_id]) end
permitted_feedback_review_attributes()
click to toggle source
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 51 def permitted_feedback_review_attributes [:rating, :comment] end
prevent_multiple_feedback_reviews()
click to toggle source
Ensures that a user can’t leave multiple feedbacks on a single review
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 77 def prevent_multiple_feedback_reviews @feedback_review = @review.feedback_reviews.find_by(user_id: @current_api_user) if @feedback_review.present? invalid_resource!(@feedback_review) end end
sanitize_rating()
click to toggle source
Converts rating strings like “5 units” to “5” Operates on params
# File lib/controllers/spree/api/feedback_reviews_controller.rb, line 86 def sanitize_rating params[:rating].to_s.sub!(/\s*[^0-9]*\z/, '') unless params[:feedback_review] && params[:feedback_review][:rating].blank? end