我试图限制哪些子节点在序列化程序级别的json响应中显示。如果货币被标记为“有效”,则货币应包含在Merchant的有效负载中。如果货币为“非活动”,则不应包括商家的GET。
rails,4.2.5 active_model_serializers,〜> 0.10.0.rc3
串行器
class MerchantSerializer < ActiveModel::Serializer
attributes :id, :merchant_name, :merchant_type, :currencies
has_many :merchant_currency_maps
end
class MerchantCurrencyMapSerializer < ActiveModel::Serializer
attributes :id, :currency, :b4flight_id, :aht_account_id, :created_at, :updated_at, :guess_merchant
end
我尝试了什么
我尝试过制作include_currency_maps
种方法link,但无济于事
并创建显示here的自定义属性。但我仍在努力掌握如何/应该如何做到这一点。
答案 0 :(得分:1)
如果我正确理解您的问题,您希望has_many :merchant_currency_maps
仅包含有效的货币地图,对吗?您可以尝试覆盖MerchantSerializer
:
def merchant_currency_maps
object.merchant_currency_maps.where(active: true)
end
答案 1 :(得分:0)
使用它可以让rails更好地缓存您的数据:
has_many :merchant_currency_maps, -> { where(active: true) }
或者这样做
has_many :active_merchant_currency_maps, -> { where(active: true) }
has_many :merchant_currency_maps
has_many :inactive_merchant_currency_maps, -> { where(active: false) }
每个都将单独缓存。令人担心的是,3个阵列中的每个阵列都有不同的对象,并且可能会变得不同步,除非您将轨道配置为同步它们。