Добавление пользовательских атрибутов в to_json - PullRequest
2 голосов
/ 12 апреля 2011

При использовании serialize_with_options я пришел к выводу, что он не работает, как я ожидал, когда дело доходит до массивов.

Итак, учитывая массив @posts (как видно из README) вызов @ posts.to_json не будет включать пользователя или показывать только заголовок.

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

Использование Rails 3.0.4

PS.Существуют ли какие-либо альтернативы для включения двух пользовательских атрибутов в формат JSON модели?

1 Ответ

1 голос
/ 27 декабря 2011

с учетом перегрузки ActiveModel :: Serializer :: JSON.as_json вот так:

class Post
  def as_json(options)
    # make sure options is not nil
    options ||= {}
    # call super with modified options
    super options.deep_merge(methods: [:custom_attr1, :custom_attr2])
  end

  def custom_attr1
    "return first custom data"
  end

  def custom_attr2
    "return second custom data"
  end
end

#rspec this like that
describe Post do
  subject { Post.new }
  it "has custom data" do
    to_json.should include(
      { custom_attr1: "return first custom data",
        custom_attr2: "return second custom data"})
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...