Sha256: 6cf565d5e0215df9f548bbadb3786fa67beba15c40b80a848437c68f94af0ef3

Contents?: true

Size: 975 Bytes

Versions: 3

Compression:

Stored size: 975 Bytes

Contents

class DiscussionsMessagesController < AjaxController
  include WithAuthorization

  before_action :set_discussion!, only: [:create, :destroy]
  before_action :authorize_user!, only: [:destroy]
  before_action :authorize_moderator!, only: [:question, :approve]

  def create
    @discussion.submit_message! message_params, current_user
    redirect_back(fallback_location: root_path)
  end

  def destroy
    current_message.destroy!
    redirect_back(fallback_location: root_path)
  end

  def approve
    current_message.toggle_approved!
    head :ok
  end

  def question
    current_message.toggle_not_actually_a_question!
    head :ok
  end

  private

  def set_discussion!
    @discussion ||= Discussion.find_by(id: params[:discussion_id])
  end

  def authorize_user!
    current_message.authorize! current_user
  end

  def current_message
    @message ||= Message.find(params[:id])
  end

  def message_params
    params.require(:message).permit(:content)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mumuki-laboratory-7.7.2 app/controllers/discussions_messages_controller.rb
mumuki-laboratory-7.7.1 app/controllers/discussions_messages_controller.rb
mumuki-laboratory-7.7.0 app/controllers/discussions_messages_controller.rb