Я создаю API для рельсов 5 с активными сериализаторами моделей для визуализации объектов JSON. Я структурировал свои контроллеры следующим образом, используя пространство имен для версий. Я покажу один из моих ресурсов для отображения песни.
application_controller.rb (упрощенный):
class ApplicationController < ActionController::API
include ActionController::Serialization
end
songs_controller.rb:
class Api::V1::SongsController < ApplicationController
before_action :set_song, only: [:show, :update, :destroy]
def show
authorize @song
render json: { song: @song }
end
private
def song_params
params.require(:song).permit(:title, :artist, :band_id)
end
def set_song
@song = Song.find(params[:id])
end
end
songs_serializer.rb
class SongSerializer < ActiveModel::Serializer
attributes :id, :title, :band_id
end
Модель песни не имеет пространства имен в Api::V1
. Модель песни имеет несколько других атрибутов, таких как artist
, created_at
и updated_at
, которые не включены в сериализатор, поэтому, как я понимаю, они не будут включены в JSON, отправляемый в приложение браузера.
Моя проблема в том, что мое приложение, похоже, полностью игнорирует song_serializer
и отправляет JSON, который включает все поля базы данных для песни. Любой вклад будет приветствоваться.