AMS исключает ассоциацию для определенных действий контроллера

Мне интересно, возможно ли исключить ассоциацию с заданным действием контроллера. Что-то вроде:

class BookSerializer < ApplicationSerializer
  has_many :comments, if: -> { params[:action] == "index" } do
    object.comments.ordered_by_creation
  end
end

class BooksController < ApplicationController
  def index
    @books = Book.all
    render json: @books, status: :ok
  end
end

Есть ли способ передать params[:action] в BookSerializer? Прямо сейчас я управляю этой ситуацией, расширяя BookSerializer и объявляя об ассоциации там

class BookCommentsSerializer < BookSerializer
  has_many :comments do
    object.comments.ordered_by_creation
  end
end

class BooksController < ApplicationController
  def index
    @books = Book.all
    render json: @books, status: :ok
  end

  def show
    render json: @book, serializer: BookCommentsSerializer, status: :ok
  end
end

0 ответов

Другие вопросы по тегам