diff --git a/README.md b/README.md index 6bd614eb..45b68f7a 100644 --- a/README.md +++ b/README.md @@ -73,10 +73,6 @@ Currently `ActiveModel::Serializers` expects objects to implement read\_attribute\_for\_serialization. That's all you need to do to have your POROs supported. -# ActiveModel::Serializer - -All new serializers descend from ActiveModel::Serializer - # render :json In your controllers, when you use `render :json`, Rails will now first search @@ -726,6 +722,29 @@ end The caching interface uses `Rails.cache` under the hood. +# ApplicationSerializer + +By default, new serializers descend from ActiveModel::Serializer. However, if you wish to share behaviour across your serializers you can create an ApplicationSerializer at ```app/serializers/application_serializer.rb```: + +```ruby +class ApplicationSerializer < ActiveModel::Serializer +end +``` + +Any newly generated serializers will automatically descend from ApplicationSerializer. + +``` +$ rails g serializer post +``` + +now generates: + +```ruby +class PostSerializer < ApplicationSerializer + attributes :id +end +```` + # Design and Implementation Guidelines ## Keep it Simple diff --git a/lib/active_model/serializer/generators/serializer/serializer_generator.rb b/lib/active_model/serializer/generators/serializer/serializer_generator.rb index 7c4c036d..40a8f939 100644 --- a/lib/active_model/serializer/generators/serializer/serializer_generator.rb +++ b/lib/active_model/serializer/generators/serializer/serializer_generator.rb @@ -26,7 +26,7 @@ module Rails if options[:parent] options[:parent] elsif (ns = Rails::Generators.namespace) && ns.const_defined?(:ApplicationSerializer) || - defined?(::ApplicationSerializer) + (Object.const_get(:ApplicationSerializer) rescue nil) 'ApplicationSerializer' else 'ActiveModel::Serializer'