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