/
tofflin
/
music_project
Обзор
Документация
Войти
/
tofflin
/
music_project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
app/controllers/tracks_controller.rb
77 строк
2 KB
dmitriy_l
Сделал идентификацию по id
15 июн 2025, 00:20
15 июн 2025, 00:20
6f212c6
Код
Авторство
О чём код?
class TracksController < ApplicationController include UserSetup include TrackSerialization before_action :authenticate_user!, except: [ :home_latest ] before_action :set_track, only: [ :update ] before_action :set_user, only: [ :user_tracks, :update ] def home_latest tracks = Track.order(created_at: :desc).limit(6) render json: serialize_tracks(tracks), status: :ok end def user_tracks tracks = @user.tracks.order(created_at: :desc) render json: serialize_tracks(tracks), status: :ok end def create track = current_user.tracks.new(track_params) track.artist = current_user.nickname if track.save render json: { message: "Track uploaded successfully", track: serialize_track(track) }, status: :created else render json: { error: track.errors.full_messages.join(", ") }, status: :unprocessable_entity end end def update if @track.user_id != current_user.id render json: { error: "You are not authorized to update this track" }, status: :forbidden return end if @track.update(track_params.merge(artist: current_user.nickname)) render json: { message: "Track updated successfully", track: serialize_track(@track) }, status: :ok else render json: { error: @track.errors.full_messages.join(", ") }, status: :unprocessable_entity end end def liked_tracks tracks = current_user.liked_tracks.order(created_at: :desc) render json: serialize_tracks(tracks), status: :ok end def show track = Track.find(params[:id]) render json: serialize_track_with_user(track), status: :ok end private def set_track @track = Track.find(params[:id]) end def track_params params.require(:track).permit( :title, :duration, :genre, :audio_file, :cover ) end end