Вложенные полиморфные ассоциации с активным модельным сериализатором - PullRequest
0 голосов
/ 12 мая 2019

Я только начинаю копаться в сериализации в рельсах, и у меня возникают проблемы с настройкой его для вложенной полиморфной ассоциации.

В моих рельсовых магазинах api у меня есть следующие ассоциации:

### Cart model
class Cart < ApplicationRecord
  has_many :discounts
end

### Discount model
class Discount < ApplicationRecord
  belongs_to :cart
  belongs_to :discountable, polymorphic: true
end

### Extras model (extra meaning you get 3 items for price of 2)
class Extra < ApplicationRecord
  has_many :discounts, as: :discountable
end

и что я достиг с сериализаторами:

### Cart serializer
class CartSerializer < ActiveModel::Serializer
  has_many :discounts
end

### Discount serializer
class DiscountSerializer < ActiveModel::Serializer
  attribute :discountable, polymorphic: true
end

который в свою очередь дает мне этот JSON:

{
    "discounts": [
        {
            "discountable": {
                "id": 1,
                "kind": "extra",
                "name": "Grill Set",
                "product_ids": [
                    1,
                    2,
                    3
                ],
                "count": 2,
                "created_at": "2019-05-11T17:09:44.366Z",
                "updated_at": "2019-05-11T17:09:44.366Z"
            }
        }
    ]
}

Но меня это не совсем устраивает - я бы хотел пропустить атрибуты create_at и updated_at и скидки, чтобы они отображались один под другим (без учета вложенных вложений).

Примерно так:

{
    "discounts": [
        {
            "id": 1,
            "kind": "extra",
            "name": "Grill Set",
            "product_ids": [
                1,
                2,
                3
            ],
            "count": 2,
        }
    ]
}

Буду рад помощи.

...