app/controllers/tags_controller.rb
class TagsController < ApplicationController
before_action :authenticate_user!
before_action :find_account!
before_action :find_conversation!
respond_to :json
def index
respond_with @account.tags
end
def create
@conversation.tags = (@conversation.tags + [params[:tag]]).uniq
@conversation.save
@tag_event = TagEvent.create(
conversation: @conversation,
user: current_user,
tag: params[:tag]
)
respond_with @tag_event, location: account_conversation_path(@account, @conversation)
end
def destroy
@tag_event = TagEvent.find(params[:id])
@conversation.tags = @conversation.tags - [@tag_event.tag]
@conversation.save
@tag_event.destroy
respond_with @tag_event
end
private
def find_conversation!
@conversation = @account.conversations.find_by!(number: params.fetch(:conversation_id))
end
def find_account!
@account = Account.find_by!(slug: params.fetch(:account_id))
authorize! AccountReadPolicy.new(@account, current_user)
end
end