rails active model serializer没有做任何事情

时间:2015-04-28 22:03:45

标签: ruby-on-rails ruby serializer

我正在使用此处找到的GEM:https://rubygems.org/gems/active_model_serializers

我已经使用rails g创建了序列化程序,将它添加到我返回json的控制器中但它仍然返回所有内容而不是已定义的属性 - 任何想法?

module Api
    module V1
        class ProductDetailsController < ApplicationController          
            def show
                @prod = ProductPrice.joins(:product, :retailer).select("*")
                render json: @prod, serializer: ProductDetailSerializer
            end 
        end
    end
end

class ProductDetailSerializer < ActiveModel::Serializer
  attributes :id
end

感谢。

1 个答案:

答案 0 :(得分:0)

您的查询都是错误的 - 我猜测,因为您正在定义show方法,所以您要查找的内容是这样的:

module Api
    module V1
        class ProductDetailsController < ApplicationController          
            def show
                @prod = ProductPrice.joins(:product, :retailer).find(params[:id])
                render json: @prod, serializer: ProductDetailSerializer
            end 
        end
    end
end

如果您真的打算序列化一系列ProductPrice对象,则需要pass the each_serializer option

module Api
    module V1
        class ProductDetailsController < ApplicationController          
            def show
                @prod = ProductPrice.joins(:product, :retailer).all
                render json: @prod, each_serializer: ProductDetailSerializer
            end 
        end
    end
end