sanger/sequencescape

View on GitHub
app/controllers/requests/comments_controller.rb

Summary

Maintainability
A
35 mins
Test Coverage
D
63%
# frozen_string_literal: true
class Requests::CommentsController < ApplicationController
  before_action :discover_request

  def index
    commentables = [@request, @request.asset, @request.asset&.labware].compact
    @comments = Comment.where(commentable: commentables).order('created_at ASC')
    if request.xhr?
      render partial: 'simple_list', locals: { descriptions: @comments.pluck(:description) }
    else
      # Perform default
    end
  end

  def create
    @request.comments.create(description: params[:comment], user_id: current_user.id)
    @comments = @request.comments
    render partial: 'list', locals: { commentable: @request, visible: true }
  end

  def destroy
    comment = Comment.find(params[:id])
    comment.destroy if comment.present?
    @comments = @request.comments
    render partial: 'list', locals: { commentable: @request, visible: true }
  end

  private

  def discover_request
    @request = Request.find(params[:request_id])
  end
end