Go for it, this will improve the way different serializers hook inside
Rails so I don't see any reason to not do so.

On Wed, Jun 24, 2015 at 1:07 PM Benjamin Fleischer <bfleisc...@gmail.com>
wrote:

> I'm a little bummed no one responded to this.  Here's some new info:
> ActiveModelSerializers already mixes in `get_serializer` to controllers.
> <https://github.com/rails-api/active_model_serializers/blob/f67fd976ecbe41305c484e4689003758e8631998/lib/action_controller/serialization.rb#L21-L30>
>
> In AMS PR #954
> <https://github.com/rails-api/active_model_serializers/pull/954> I've moved
> the serialization logic there from _render_with_renderer_json
> <https://github.com/rails-api/active_model_serializers/blob/728b939521321f0bbe6680d4d070a4b63a1ca404/lib/action_controller/serialization.rb#L22-L49>
>
>
> - def get_serializer(resource)- @_serializer ||= @_serializer_opts.delete(
> :serializer)- @_serializer ||= ActiveModel::Serializer
> .serializer_for(resource)-- if @_serializer_opts.key?(:each_serializer)-
> @_serializer_opts[:serializer] = @_serializer_opts.delete(:each_serializer
> )+ def get_serializer(resource, options = {})+ serializable_resource =
> ActiveModel::Serializer::build(resource, options) do |builder|+ if
> builder.serializer?+ builder.serialization_scope ||= serialization_scope+
> builder.serialization_scope_name = _serialization_scope+ builder.adapter+
> else+ resource+ end end-- @_serializer end
>  [:_render_option_json, :_render_with_renderer_json].each do |
> renderer_method| define_method renderer_method do |resource, options|-
> @_adapter_opts, @_serializer_opts =- options.partition { |k, _|
> ADAPTER_OPTION_KEYS.include? k }.map { |h| Hash[h] }-- if use_adapter? &&
> (serializer = get_serializer(resource))-- @_serializer_opts[:scope] ||=
> serialization_scope- @_serializer_opts[:scope_name] = _serialization_scope
> -- # omg hax- object = serializer.new(resource, @_serializer_opts)-
> adapter = ActiveModel::Serializer::Adapter.create(object, @_adapter_opts)-
> super(adapter, options)
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to