lectures_controller.rb 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. class LecturesController < ApplicationController
  2. before_action :set_lecture, only: %i[show edit update destroy]
  3. before_action :check_can_edit, only: %i[edit update]
  4. before_action :check_can_create, only: %i[create]
  5. def show; end
  6. def new
  7. @lecture = Lecture.new
  8. end
  9. def edit; end
  10. def create
  11. @lecture = Lecture.new(lecture_params)
  12. if @lecture.save
  13. flash[:success] = 'Created lecture'
  14. redirect_to @lecture
  15. else
  16. render :new
  17. end
  18. end
  19. def update
  20. if @lecture.update(lecture_params)
  21. flash[:success] = 'Updated lecture'
  22. redirect_to @lecture
  23. else
  24. render :edit
  25. end
  26. end
  27. private
  28. # Use callbacks to share common setup or constraints between actions.
  29. def set_lecture
  30. @lecture = Lecture.find(params[:id])
  31. end
  32. def lecture_params
  33. allowed = [:description]
  34. allowed += %i[course_id starts_at ends_at location] if helpers.can_edit_full?
  35. params.require(:lecture).permit(*allowed)
  36. end
  37. def check_can_create
  38. redirect_to root_url unless helpers.can_edit_full?
  39. end
  40. def check_can_edit
  41. redirect_to root_url unless helpers.can_edit_description?
  42. end
  43. end