我有以下序列化程序
class BookSerializer < ActiveModel::Serializer
attributes :id, :name, :publisher, :author, :cover_url
has_many :chapters
end
我在 bookscontroller.rb 文件中有两种方法,如下所示:
def index
books = Book.select(:id, :name, :publisher, :publisher, :cover, :author)
if books.present?
render json: books
end
end
def show
book = Book.find_by_id params[:id]
render json: book
end
实际上,一切正常,但问题是我希望显示页面中的章节记录不在索引页面上,但是现在这两种操作都在运行获取章节的查询,但我只想包含 has_many:chapters 表演动作中的strong>。
那么我可以在Rails控制器中使用任何方法来关联特定方法吗?
答案 0 :(得分:1)
您可以对不同的操作使用不同的序列化器。例如,从BookSerializer中删除has_many :chapters
并创建一个单独的BookWithChaptersSerializer
。如下使用它:
class BookWithChaptersSerializer < ActiveModel::Serializer
attributes :id, :name, :publisher, :author, :cover_url
has_many :chapters
end
def show
book = Book.find_by_id params[:id]
render json: book, serializer: BookWithChaptersSerializer
end