/
tofflin
/
music_project
Обзор
Документация
Войти
/
tofflin
/
music_project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
app/controllers/likes_controller.rb
54 строки
1 KB
tofflin
настройка лайков плейлистов, новая миграция на удаление таблицы user_playlists
11 июн 2025, 11:44
11 июн 2025, 11:44
df212ca
Код
Авторство
О чём код?
class LikesController < ApplicationController before_action :authenticate_user! before_action :find_likeable def create current_user.likes(@likeable) case @likeable when Track current_user.add_to_library(@likeable) when Playlist current_user.collect_playlist(@likeable) end render json: like_response("Liked and added to library"), status: :created end def destroy current_user.unlikes(@likeable) case @likeable when Track current_user.remove_from_library(@likeable) when Playlist current_user.uncollect_playlist(@likeable) end render json: like_response("Unliked and removed from library"), status: :ok end private def like_response(message) { message: message, likeable_type: @likeable.class.name, likeable_id: @likeable.id, likes_count: @likeable.get_upvotes.size } end def find_likeable klass = [Track, Playlist].detect do |c| params["#{c.name.underscore}_id"] end if klass @likeable = klass.find_by(id: params["#{klass.name.underscore}_id"]) render json: { error: "#{klass.name} not found" }, status: :not_found unless @likeable else render json: { error: "Invalid likeable type" }, status: :bad_request end end end