/api/app/controllers/spree/api/v1/option_values_controller.rb

https://gitlab.com/adamlwalker/spree · Ruby · 60 lines · 53 code · 7 blank · 0 comment · 4 complexity · f752ac3ca390b77c3a9761ccf7b5eaeb MD5 · raw file

  1. module Spree
  2. module Api
  3. module V1
  4. class OptionValuesController < Spree::Api::BaseController
  5. def index
  6. if params[:ids]
  7. @option_values = scope.where(:id => params[:ids])
  8. else
  9. @option_values = scope.ransack(params[:q]).result.distinct
  10. end
  11. respond_with(@option_values)
  12. end
  13. def show
  14. @option_value = scope.find(params[:id])
  15. respond_with(@option_value)
  16. end
  17. def create
  18. authorize! :create, Spree::OptionValue
  19. @option_value = scope.new(option_value_params)
  20. if @option_value.save
  21. render :show, :status => 201
  22. else
  23. invalid_resource!(@option_value)
  24. end
  25. end
  26. def update
  27. @option_value = scope.accessible_by(current_ability, :update).find(params[:id])
  28. if @option_value.update_attributes(option_value_params)
  29. render :show
  30. else
  31. invalid_resource!(@option_value)
  32. end
  33. end
  34. def destroy
  35. @option_value = scope.accessible_by(current_ability, :destroy).find(params[:id])
  36. @option_value.destroy
  37. render :text => nil, :status => 204
  38. end
  39. private
  40. def scope
  41. if params[:option_type_id]
  42. @scope ||= Spree::OptionType.find(params[:option_type_id]).option_values.accessible_by(current_ability, :read)
  43. else
  44. @scope ||= Spree::OptionValue.accessible_by(current_ability, :read).load
  45. end
  46. end
  47. def option_value_params
  48. params.require(:option_value).permit(permitted_option_value_attributes)
  49. end
  50. end
  51. end
  52. end
  53. end