ActiveModelSerializer条件关联呈现

时间:2016-01-27 11:12:00

标签: ruby-on-rails spree active-model-serializers rails-api

在spree API应用程序中,我想仅在用户为product时呈现admin的关联注释。否则只需渲染product详细信息。

我正在使用0.10.0.rc2

active_model_serializers
gem 'active_model_serializers', '~> 0.10.0.rc2'

我按照以下方式覆盖了product狂欢的序列化程序:

Spree::ProductSerializer.class_eval do
  attributes :stock_available

  has_many :comments, serializer: MyApplication::CommentSerializer

  # http://www.rubydoc.info/gems/active_model_serializers#Associations
  def filter(keys) # <--- Option 1
    keys.delete(:comments) unless scope.admin?
    keys
  end

  def include_comments? # <--- Option 2
    scope.admin?
  end
end

这里comments是一个多态表。然而,这两个选项中没有一个似乎有效。这里有什么想法错了吗?

我在active-model-serializer上浏览了RailsCast episode。但它似乎并没有在这里工作。

同样奇怪的是,当我将binding.pry放入这两种方法中的任何一种时,/api/products/:id处的请求都不会在binding.pry暂停。

由于

0 个答案:

没有答案