diff --git a/Gemfile b/Gemfile index b99b65de..770f2e39 100644 --- a/Gemfile +++ b/Gemfile @@ -8,14 +8,21 @@ gem 'rack-cors', require: 'rack/cors' # gem 'sqlite3' -#source 'https://rails-assets.org' do -#end +source 'https://rails-assets.org' do + group :test do + gem 'rails-assets-qunit' + gem 'rails-assets-ember-qunit' + end +end gem 'slim-rails' # Gems used only for assets and not required # in production environments by default. -gem 'active_model_serializers', '~> 0.10.0.rc2' # explicitly outside assets +#gem 'active_model_serializers', '~> 0.10.0.rc2' # explicitly outside assets +gem 'active_model_serializers', github: 'rails-api/active_model_serializers' # explicitly outside assets +#gem 'jsonapi-serializers', github: 'bterkuile/jsonapi-serializers' +gem 'jsonapi-serializers', path: '/home/benjamin/development/rails/components/jsonapi-serializers' group :assets do gem 'jquery-rails' gem 'jquery-ui-rails' @@ -97,8 +104,6 @@ group :development, :test do gem 'rspec-rails' gem 'pry-rails' gem 'test_squad' - gem 'rails-assets-qunit' - gem 'rails-assets-ember-qunit' gem 'factory_girl_rails' end diff --git a/Gemfile.lock b/Gemfile.lock index a7864980..bb7617f8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -31,15 +31,31 @@ GIT GIT remote: git://github.com/bterkuile/simply_stored.git - revision: 05cb3a06a9d4a3588efd4491db42fac84276befb + revision: 57773e8d4b3fc3410875576b3257ffa628e8d4ec specs: simply_stored (1.0.0) activesupport couch_potato (>= 0.2.15) rest-client (>= 1.4.2) +GIT + remote: git://github.com/rails-api/active_model_serializers.git + revision: 6784866a2d4a57e5b1c571afcbf76362708b11ab + specs: + active_model_serializers (0.10.0.rc2) + actionpack (>= 4.0) + activemodel (>= 4.0) + railties (>= 4.0) + +PATH + remote: /home/benjamin/development/rails/components/jsonapi-serializers + specs: + jsonapi-serializers (0.2.6) + activesupport + GEM remote: https://rubygems.org/ + remote: https://rails-assets.org/ specs: ace-rails-ap (4.0.0) actionmailer (4.2.4) @@ -61,14 +77,12 @@ GEM erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - active-model-adapter-source (2.0.0) + active-model-adapter-source (2.0.1) ember-data-source (>= 1.13, < 3.0) active_attr (0.8.5) activemodel (>= 3.0.2, < 5.0) activesupport (>= 3.0.2, < 5.0) active_decorator (0.5.3) - active_model_serializers (0.10.0.rc2) - activemodel (>= 4.0) activejob (4.2.4) activesupport (= 4.2.4) globalid (>= 0.3.0) @@ -261,7 +275,7 @@ GEM mime-types (>= 1.16, < 3) method_source (0.8.2) mime-types (2.6.1) - mini_magick (4.2.10) + mini_magick (4.3.1) mini_portile (0.6.2) minitest (5.8.0) multi_json (1.11.2) @@ -324,7 +338,7 @@ GEM railties (= 4.2.4) sprockets-rails rails-assets-ember-qunit (0.4.10) - rails-assets-qunit (1.18.0) + rails-assets-qunit (1.19.0) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) rails-dom-testing (1.0.7) @@ -405,7 +419,7 @@ GEM spring (1.3.6) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - sprockets (3.3.3) + sprockets (3.3.4) rack (~> 1.0) sprockets-rails (2.3.2) actionpack (>= 3.0) @@ -426,7 +440,7 @@ GEM thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) - timers (4.0.1) + timers (4.0.4) hitimes tinymce-rails (4.2.4) railties (>= 3.1.1) @@ -465,7 +479,7 @@ DEPENDENCIES ace-rails-ap active_attr active_decorator - active_model_serializers (~> 0.10.0.rc2) + active_model_serializers! airbrussh bourbon cancancan @@ -494,6 +508,7 @@ DEPENDENCIES jquery-rails jquery-ui-rails js-routes + jsonapi-serializers! kaminari launchy letter_opener @@ -508,8 +523,8 @@ DEPENDENCIES quiet_assets rack-cors rails (~> 4.2.3) - rails-assets-ember-qunit - rails-assets-qunit + rails-assets-ember-qunit! + rails-assets-qunit! rqrcode rspec-its rspec-rails diff --git a/app/assets/javascripts/user/app/components/menu-product-categories-component.js.coffee b/app/assets/javascripts/user/app/components/menu-product-categories-component.js.coffee index c8d63480..45f50c87 100644 --- a/app/assets/javascripts/user/app/components/menu-product-categories-component.js.coffee +++ b/app/assets/javascripts/user/app/components/menu-product-categories-component.js.coffee @@ -4,6 +4,7 @@ App.MenuProductCategoriesComponent = Ember.Component.extend active_product_categories: (-> console.log "Reevaluate product categories" list = @get('product_categories') + return [] unless list now = new Date() list = list.filter (product_category) => return false unless product_category.get("active_on_#{$day_names[now.getDay()]}") diff --git a/app/assets/javascripts/user/app/controllers/table_controller.js.coffee b/app/assets/javascripts/user/app/controllers/table_controller.js.coffee index bfb6cdf1..32437279 100644 --- a/app/assets/javascripts/user/app/controllers/table_controller.js.coffee +++ b/app/assets/javascripts/user/app/controllers/table_controller.js.coffee @@ -8,7 +8,7 @@ App.TableController = Ember.Controller.extend else # no list and open supplier if @get('model.occupied') then false else true - ).property('globals.active_list.id', 'supplier.can_take_orders', 'model.occupied', 'model.id', 'globals.active_list.table.id') + ).property('globals.active_list.id', 'model.supplier.can_take_orders', 'model.occupied', 'model.id', 'globals.active_list.table.id', 'model.supplier.id') supplier: Ember.computed.alias 'model.supplier' showJoinButton: Ember.computed 'globals.active_list.id', 'supplier.can_take_orders', 'model.occupied', 'model.id', 'globals.active_list.table.id', -> return false unless @get('supplier.can_take_orders') diff --git a/app/assets/javascripts/user/app/templates/table.emblem b/app/assets/javascripts/user/app/templates/table.emblem index 5789c367..4f4e9bed 100644 --- a/app/assets/javascripts/user/app/templates/table.emblem +++ b/app/assets/javascripts/user/app/templates/table.emblem @@ -1,6 +1,6 @@ .row: .small-12.columns h3 - span.supplier-name= supplier.name + span.supplier-name= model.supplier.name span.table-number ' # = model.number @@ -13,7 +13,7 @@ button.join-table-button{action "joinOccupiedTable"}=t 'join_request.requestor.join_this_table' .row if tableCanTakeOrders - .large-6.columns= menu-product-categories product_categories=supplier.product_categories orderProducts=true + .large-6.columns= menu-product-categories product_categories=model.supplier.product_categories orderProducts=true .large-6.columns= new-product-orders-list table=model else - .large12= menu-product-categories product_categories=supplier.product_categories orderProducts=false + .large12= menu-product-categories product_categories=model.supplier.product_categories orderProducts=false diff --git a/app/controllers/users/lists_controller.rb b/app/controllers/users/lists_controller.rb index 777b801f..d76133c1 100644 --- a/app/controllers/users/lists_controller.rb +++ b/app/controllers/users/lists_controller.rb @@ -8,7 +8,7 @@ module Users lists.reject!{|l| l.id == params[:exclude_list]} if params[:exclude_list].present? lists.reject!{|l| l.id == current_user.active_list_id } if current_user && current_user.active_list_id.present? # see spec Loading lists and switching to the order products view works, lists loading may unlink active list orders lists.include_relation(:users, :supplier) - render json: lists, each_serializer: Users::ListSerializer, meta: {total_pages: lists.total_pages, page: lists.current_page} #, root: :lists + render json: JSONAPI::Serializer.serialize(lists, serializer: Users::ListSerializer, include: %w[supplier users], is_collection: true, meta: {total_pages: lists.total_pages, page: lists.current_page}) #, root: :lists end #EMBER @@ -17,11 +17,17 @@ module Users show end + def table + list = List.find(params[:id]) + render json: {}, status: :not_found and return unless list.present? + @table = list.table + render json: JSONAPI::Serializer.serialize(@table, serializer: Users::TableSerializer) + end + def show @list ||= List.find(params[:id]) render json: {}, status: :not_found and return unless @list.present? && Array.wrap(@list.user_ids).include?(current_user.id) - [@list].include_relation(:users) - render json: @list, serializer: Users::ListSerializer, include: %w[supplier users] + render json: JSONAPI::Serializer.serialize(@list, serializer: Users::ListSerializer, include: %w[supplier users]) end end end diff --git a/app/controllers/users/orders_controller.rb b/app/controllers/users/orders_controller.rb index 1d089364..3186e46b 100644 --- a/app/controllers/users/orders_controller.rb +++ b/app/controllers/users/orders_controller.rb @@ -8,7 +8,7 @@ module Users @list = List.find(params[:list_id]) render json: {}, status: :not_found and return unless @list.present? && Array.wrap(@list.user_ids).include?(current_user.id) orders = @list.orders.include_relation(:product_orders) - render json: orders, each_serializer: Users::OrderSerializer, include: %w[product_orders] + render json: JSONAPI::Serializer.serialize(orders, serializer: Users::OrderSerializer, include: %w[product_orders product_orders.order], is_collection: true) end # Used by the user Ember app diff --git a/app/controllers/users/tables_controller.rb b/app/controllers/users/tables_controller.rb index bb10f00b..a726f5b5 100644 --- a/app/controllers/users/tables_controller.rb +++ b/app/controllers/users/tables_controller.rb @@ -2,7 +2,14 @@ module Users class TablesController < Users::ApplicationController def show @table = Table.find(params[:id]) - render json: @table, serializer: Users::TableSerializer + render json: JSONAPI::Serializer.serialize(@table, serializer: Users::TableSerializer) + end + + def supplier + table = Table.find(params[:id]) + supplier = table.supplier + supplier.product_categories.include_relations(:products) + render json: JSONAPI::Serializer.serialize(supplier, serializer: Users::SupplierSerializer, include: %w[product_categories product_categories.products product_categories.supplier]) end end end diff --git a/app/serializers/users/list_serializer.rb b/app/serializers/users/list_serializer.rb index 29104952..048f1863 100644 --- a/app/serializers/users/list_serializer.rb +++ b/app/serializers/users/list_serializer.rb @@ -1,11 +1,16 @@ -class Users::ListSerializer < Qwaiter::Serializer +class Users::ListSerializer < Qwaiter::UserBaseSerializer # user ids for facebook pictures - self.root = :list + #self.root = :list attributes :state, :needs_help, :needs_payment, :user_requests_closing, :is_paid, :price, :closed_at has_many :users, serializer: Users::UserSerializer - has_many :orders, url: ->(list){ "/user/lists/#{list.id}/orders" }, serializer: OrderSerializer + has_many(:orders, serializer: OrderSerializer){} has_one :supplier, serializer: Users::SupplierSerializer + has_one :table + + def include_orders? + @_include_linkages.any?{|link| link =~ /orders/} + end #belongs_to :table end diff --git a/app/serializers/users/order_serializer.rb b/app/serializers/users/order_serializer.rb index 9c14cb0a..d12d8071 100644 --- a/app/serializers/users/order_serializer.rb +++ b/app/serializers/users/order_serializer.rb @@ -1,8 +1,8 @@ -class Users::OrderSerializer < Qwaiter::Serializer +class Users::OrderSerializer < Qwaiter::UserBaseSerializer attributes :state #, :list_id, :section_id, :table_id #, :price has_many :product_orders, serializer: Users::ProductOrderSerializer - belongs_to :list + has_one(:list, serializer: Users::ListSerializer ) #{ List.new(id: object.list_id )} #belongs_to :section #belongs_to :table end diff --git a/app/serializers/users/product_category_serializer.rb b/app/serializers/users/product_category_serializer.rb new file mode 100644 index 00000000..51c3d270 --- /dev/null +++ b/app/serializers/users/product_category_serializer.rb @@ -0,0 +1,7 @@ +class Users::ProductCategorySerializer < Qwaiter::UserBaseSerializer + attributes :name, :supplier_id, :active_on_sunday, :active_on_monday, :active_on_tuesday, :active_on_wednesday, + :active_on_thursday, :active_on_friday, :active_on_saturday, :full_day, :start_from, :end_on, + :position + has_many :products, serializer: Users::ProductSerializer + has_one :supplier, serializer: Users::SupplierSerializer +end diff --git a/app/serializers/users/product_order_serializer.rb b/app/serializers/users/product_order_serializer.rb index e96915c0..7a1927e8 100644 --- a/app/serializers/users/product_order_serializer.rb +++ b/app/serializers/users/product_order_serializer.rb @@ -1,6 +1,6 @@ # Used for user ember1 -class Users::ProductOrderSerializer < Qwaiter::Serializer +class Users::ProductOrderSerializer < Qwaiter::UserBaseSerializer attributes :quantity, :price, :product_name, :product_variant # belongs_to :product #DO NOT USE THIS, THIS IS NOT NEEDED - belongs_to :order + has_one :order, serializer: Users::OrderSerializer end diff --git a/app/serializers/users/product_serializer.rb b/app/serializers/users/product_serializer.rb new file mode 100644 index 00000000..68bbb19d --- /dev/null +++ b/app/serializers/users/product_serializer.rb @@ -0,0 +1,13 @@ +class Users::ProductSerializer < Qwaiter::UserBaseSerializer + attributes :name, :price, :description, :image, :code, :position, :visible, :active, :product_category_id + + has_many :product_variants, serializer: Users::ProductVariantSerializer + + def image + if object.image.present? + {small: object.image.url(:small)} + else + nil + end + end +end diff --git a/app/serializers/users/product_variant_serializer.rb b/app/serializers/users/product_variant_serializer.rb new file mode 100644 index 00000000..3d03cf3d --- /dev/null +++ b/app/serializers/users/product_variant_serializer.rb @@ -0,0 +1,3 @@ +class Users::ProductVariantSerializer < Qwaiter::UserBaseSerializer + attributes :name +end diff --git a/app/serializers/users/supplier_serializer.rb b/app/serializers/users/supplier_serializer.rb index c2e3f25c..e93d1411 100644 --- a/app/serializers/users/supplier_serializer.rb +++ b/app/serializers/users/supplier_serializer.rb @@ -1,9 +1,9 @@ -class Users::SupplierSerializer < Qwaiter::Serializer - self.root = :supplier - attributes :extended_version, :open, :name - - def extended_version - false - end +class Users::SupplierSerializer < Qwaiter::UserBaseSerializer + #self.root = :supplier + attributes :open, :name + has_many :product_categories, serializer: Users::ProductCategorySerializer + #def extended_version + # false + #end end diff --git a/app/serializers/users/table_serializer.rb b/app/serializers/users/table_serializer.rb index f9109d35..d39f36ea 100644 --- a/app/serializers/users/table_serializer.rb +++ b/app/serializers/users/table_serializer.rb @@ -1,6 +1,7 @@ -class Users::TableSerializer < Qwaiter::Serializer - self.root = :table - attributes :number, :width, :height, :position_x, :position_y, :section_id, :occupied, :supplier_id #, :alist_id +class Users::TableSerializer < Qwaiter::UserBaseSerializer + #self.root = :table + attributes :number, :width, :height, :position_x, :position_y, :section_id, :occupied #, :supplier_id #, :alist_id + has_one :supplier, serializer: Users::SupplierSerializer #def list_id #object.active_list_id || object.active_list.try(:id) diff --git a/app/serializers/users/user_serializer.rb b/app/serializers/users/user_serializer.rb index b0602a4c..eba6c81f 100644 --- a/app/serializers/users/user_serializer.rb +++ b/app/serializers/users/user_serializer.rb @@ -1,5 +1,5 @@ -class Users::UserSerializer < Qwaiter::Serializer - self.root = :user +class Users::UserSerializer < Qwaiter::UserBaseSerializer + #self.root = :user attributes :email, :provider, :uid, :name, :avatar def name diff --git a/config/initializers/active_model_serializer.rb b/config/initializers/active_model_serializer.rb index ea75d3be..2f6c1c3f 100644 --- a/config/initializers/active_model_serializer.rb +++ b/config/initializers/active_model_serializer.rb @@ -10,10 +10,13 @@ module ActiveModel::SerializerSupport end class Qwaiter::JsonAdapter < ActiveModel::Serializer::Adapter::JsonApi - def add_resource_relationships(attrs, serializer, options = {}) + def add_resource_relationships_old1(attrs, serializer, options = {}) options[:add_included] = options.fetch(:add_included, true) - serializer.class._associations.dup.each do |name, association_options| #do |name, association, opts| + serializer.associations.each do |association| #do |name, association, opts| + name = association.key + association_options = association.options next unless object = serializer.object +=begin if association_options[:type] == :has_many # todo check for object["#{name}_ids"] association_value = association_options[:association_options][:url] ? [] : serializer.send(name) @@ -42,8 +45,12 @@ class Qwaiter::JsonAdapter < ActiveModel::Serializer::Adapter::JsonApi elsif !association_value.nil? && !association_value.instance_of?(Object) association_options[:association_options][:virtual_value] = association_value end +=end + association_serializer = association.serializer opts = association_options[:association_options] + opts = association.options attrs[:relationships] ||= {} + binding.pry if association_serializer.respond_to?(:each) if opts[:url] diff --git a/config/routes.rb b/config/routes.rb index 6812dc4a..13d862b3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -83,10 +83,17 @@ Qwaiter::Application.routes.draw do get :current end resources :orders, only: [:index] + member do + get :table + end end resources :orders, only: [:create] - resources :tables, only: [:show] + resources :tables, only: [:show] do + member do + get :supplier + end + end end diff --git a/lib/qwaiter.rb b/lib/qwaiter.rb index a03faa86..6abaf04d 100644 --- a/lib/qwaiter.rb +++ b/lib/qwaiter.rb @@ -4,6 +4,7 @@ module Qwaiter extend ActiveSupport::Autoload autoload :Distribution autoload :Serializer + autoload :UserBaseSerializer autoload :Counter autoload :Broadcaster autoload :Couchbase diff --git a/lib/qwaiter/user_base_serializer.rb b/lib/qwaiter/user_base_serializer.rb new file mode 100644 index 00000000..c8693060 --- /dev/null +++ b/lib/qwaiter/user_base_serializer.rb @@ -0,0 +1,30 @@ +class Qwaiter::UserBaseSerializer + include JSONAPI::Serializer + + def base_url + "/user" + end + + def format_name(attribute_name) + #attribute_name.to_s.dasherize + attribute_name.to_s + end + + def unformat_name(attribute_name) + #attribute_name.to_s.underscore + attribute_name.to_s + end + + def relationship_related_link(attribute_name) + super + end + + def relationship_self_link(attribute_name) + end + + def self.attributes(*attrs) + attrs.each do |attr| + attribute attr + end + end +end diff --git a/spec/serializers/users/list_serializer.rb b/spec/serializers/users/list_serializer.rb new file mode 100644 index 00000000..d5678545 --- /dev/null +++ b/spec/serializers/users/list_serializer.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +describe Users::ListSerializer, type: :serializer do + it "does not perform extra queries" do + l = create :list + o1 = create :order, list: l + create :product_order, order: o1 + create :product_order, order: o1 + o2 = create :order, list: l + create :product_order, order: o2 + create :product_order, order: o2 + l.add_user create :user + l.add_user create :user + list = List.find(l.id) + [list].include_relations(:users) + result = nil + #result = expect{ JSONAPI::Serializer.serialize(list, serializer: described_class) }.not_to perform_any_queries + expect{ result = JSONAPI::Serializer.serialize(list, serializer: described_class, include: %w[supplier users]) }.not_to exceed_query_limit 1 # supplier + binding.pry + + + #expect{ object_as_json orders }.not_to exceed_query_limit 0 + #expect{ object_as_json list }.not_to exceed_query_limit 0 + end + +end diff --git a/spec/serializers/users/order_serializer.rb b/spec/serializers/users/order_serializer.rb index a1525d90..7a42f1ad 100644 --- a/spec/serializers/users/order_serializer.rb +++ b/spec/serializers/users/order_serializer.rb @@ -1,7 +1,6 @@ require 'spec_helper' -describe Users::OrderSerializer do - let(:adapter){ ActiveModel::Serializer.config.adapter } +describe Users::OrderSerializer, type: :serializer do it "does not perform extra queries" do l = create :list o1 = create :order, list: l @@ -13,18 +12,10 @@ describe Users::OrderSerializer do list = List.find(l.id) orders = list.orders.include_relation(:product_orders) #expect{ object_as_json orders }.not_to exceed_query_limit 0 - expect{ object_as_json orders }.not_to perform_any_queries - result = object_as_json(orders) + result = nil + expect{ result = JSONAPI::Serializer.serialize(orders, serializer: described_class, include: 'product_orders', is_collection: true)}.not_to perform_any_queries binding.pry - #result[:included].size.should eq 4 + result[:included].size.should eq 4 end - def object_as_json(obj) - serializer = if obj.is_a?(Array) - ActiveModel::Serializer::ArraySerializer.new(obj, serializer: described_class, add_included: true) - else - serializer = described_class.new(obj) - end - adapter.new(serializer, include: %w[product_orders]).as_json - end end diff --git a/spec/serializers/users/table_serializer.rb b/spec/serializers/users/table_serializer.rb new file mode 100644 index 00000000..eb1de8db --- /dev/null +++ b/spec/serializers/users/table_serializer.rb @@ -0,0 +1,11 @@ +require 'spec_helper' + +describe Users::TableSerializer, type: :serializer do + it "does not perform extra queries" do + table = create :table + result = object_as_json(table) + binding.pry + result[:included].size.should eq 4 + end + +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 7bd33aec..c0e16e7c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,6 @@ # This file is copied to spec/ when you run 'rails generate rspec:install' -require 'simplecov' -SimpleCov.start 'rails' +#require 'simplecov' +#SimpleCov.start 'rails' ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../config/environment", File.dirname(__FILE__)) require 'rspec/rails' @@ -102,6 +102,7 @@ RSpec.configure do |config| config.include Features::BasicHelpers, type: :feature config.include SpecRouteHelpers, type: :feature config.include SpecEmberHelpers, type: :feature + config.include SerializersTestHelpers, type: :serializer #config.use_transactional_fixtures = true config.infer_base_class_for_anonymous_controllers = true config.filter_run_excluding broken: true diff --git a/spec/support/query_limit.rb b/spec/support/matchers/query_limit.rb similarity index 93% rename from spec/support/query_limit.rb rename to spec/support/matchers/query_limit.rb index 4a92e2df..c2cee899 100644 --- a/spec/support/query_limit.rb +++ b/spec/support/matchers/query_limit.rb @@ -28,7 +28,7 @@ RSpec::Matchers.define :exceed_query_limit do |expected| begin record = CouchRest.get(q) if record.is_a?(SimplyStored::Couch) - info += " #{record.class.name}" + info = "#{record.class.name.ljust(20)} => #{q.last(32)}" end rescue end @@ -64,7 +64,7 @@ RSpec::Matchers.define :perform_any_queries do |expected| begin record = CouchRest.get(q) if record.is_a?(SimplyStored::Couch) - info += " #{record.class.name}" + info = "#{record.class.name.ljust(20)} => #{q.last(32)}" end rescue end diff --git a/spec/support/serializers_test_helpers.rb b/spec/support/serializers_test_helpers.rb new file mode 100644 index 00000000..f6017dc5 --- /dev/null +++ b/spec/support/serializers_test_helpers.rb @@ -0,0 +1,14 @@ +module SerializersTestHelpers + + def object_as_json(obj) + serializer = if obj.is_a?(Array) + ActiveModel::Serializer::ArraySerializer.new(obj, serializer: described_class, add_included: true) + else + serializer = described_class.new(obj) + end + adapter.new(serializer, include: %w[product_orders]).as_json + end + def adapter + @active_model_adapter = ActiveModel::Serializer.config.adapter + end +end