Переопределение Rails as_json при переименовании ключа и настройке атрибутов - PullRequest
0 голосов
/ 08 июня 2018

Как я могу переопределить метод as_json в Rails, используя псевдоним для вложенного ключа ассоциации и включая (или исключая) определенные атрибуты в строке JSON?

class Book < ApplicationRecord
  has_many :pages
  has_many :paragraphs, through: :pages

  accepts_nested_attributes_for :pages, allow_destroy: true
end

class Page < ApplicationRecord
  belongs_to :book
  has_many :paragraphs

  accepts_nested_attributes_for :paragraphs, allow_destroy: true
end

class Paragraph < ApplicationRecord
  belongs_to :page
  has_one :book, through: :page
end

Мне нужно обратиться кчасть JSON в виде "параграфов" в виде "параграфов_атрибутов", поэтому Rails будет принимать их через сильные параметры.И я хотел бы ограничить включенные атрибуты.Я попробовал этот синтаксис, но он не работает ...

// on the Page model

def as_json(options = {})
  json = {:id => id, :name => name, :paragraphs_attributes => paragraphs(except: [:created_at, :updated_at])}
end

1 Ответ

0 голосов
/ 08 июня 2018

используйте gem Active Model Serializer

  • gem "active_model_serializers", в вашем Gemfile
  • установите комплект
  • has_many: параграфы, ключ: "paras_attributes"

https://github.com/rails-api/active_model_serializers/blob/v0.10.6/docs/general/serializers.md

...