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.