Sha256: eedea4fe8ac9a99e5bfd3ffdad99a1fbf4f65937eecef7906d2303dbe17c6815

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

module Rails
  module Generators
    class SerializerGenerator < NamedBase
      source_root File.expand_path('../templates', __FILE__)
      check_class_collision :suffix => 'Serializer'

      argument :attributes, :type => :array, :default => [], :banner => 'field:type field:type'

      class_option :parent, :type => :string, :desc => 'The parent class for the generated serializer'

      def create_serializer_file
        template 'serializer.rb.erb', File.join('app/serializers', class_path, "#{file_name}_serializer.rb")
      end

      private

      def attributes_names
        [:id] + attributes.reject(&:reference?).map! { |a| a.name.to_sym }
      end

      def association_names
        attributes.select(&:reference?).map! { |a| a.name.to_sym }
      end

      def parent_class_name
        if options[:parent]
          options[:parent]
        elsif defined?(::ApplicationSerializer)
          'ApplicationSerializer'
        else
          'ActiveModel::Serializer'
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
active_model_serializers-0.10.1 lib/generators/rails/serializer_generator.rb
active_model_serializers-0.10.0 lib/generators/rails/serializer_generator.rb
active_model_serializers-0.10.0.rc5 lib/generators/rails/serializer_generator.rb
active_model_serializers-0.10.0.rc4 lib/generators/rails/serializer_generator.rb