Добавление дополнительных атрибутов в сериализацию ActiveRecord? - PullRequest
5 голосов
/ 25 марта 2009

У меня нормально работает сериализация json

render :json => "#{current_object.serialize(:json, :attributes => [:id, :name])}

Но я также хочу добавить дополнительные данные в json, прежде чем они будут возвращены клиенту. Преимущественно auth_token.

Погуглил как сумасшедший, но я не могу найти, какой вариант сериализации примет, чтобы позволить мне добавлять / объединять мои другие данные в JSON.

Надеясь найти что-то подобное ...

current_object.serialize(:json, :attriubtes => [:id, name], :magic_option => {:form_authenticity_token => "#{form_authenticity_token}"})

Ответы [ 3 ]

4 голосов
/ 25 марта 2009

Вам нужен ключ: Methods, который работает как: атрибуты, но будет включать результаты данных методов. В вашем случае:

current_object.to_json(
  :attributes => [:id, :name],
  :methods => [:form_authenticity_token]
)
1 голос
/ 19 января 2010

Для чего бы это ни стоило, в недавнем Rails я взломал вместе, что вы хотите, как это:

sr = ActiveRecord::Serialization::Serializer.new(your_object, some_serialization_options).serializable_record
sr['extra'] = my_extra_calculation(some_parameters)
format.json { render :json => sr }

Где your_object - это то, что вы хотите сериализовать, some_serialization_options - ваш стандарт: include,: only и т. Д., А my_extra_calculation - это все, что вы хотите сделать, чтобы установить значение.

Jimmy

0 голосов
/ 25 марта 2009

взломал его и двигался дальше ...

current_object.serialize(:json, :attributes => [:id, :name]).gsub(/\}$/, ", \"form_authenticity_token\": \"#{form_authenticity_token}\"}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...