Sha256: 6b0f77783b702136f1b8d6b64de2f39aa05d0e7691b35c7a3f693523ddbcef47

Contents?: true

Size: 1.09 KB

Versions: 16

Compression:

Stored size: 1.09 KB

Contents

module RestPack::Serializer::Attributes
  extend ActiveSupport::Concern

  def default_href
    "#{RestPack::Serializer.config.href_prefix}/#{self.class.key}/#{@model.id}"
  end

  module ClassMethods
    def serializable_attributes
      @serializable_attributes
    end

    def attributes(*attrs)
      attrs.each { |attr| attribute attr }
    end

    def attribute(name, options={})
      options[:key] ||= name.to_sym

      @serializable_attributes ||= {}
      @serializable_attributes[options[:key]] = name

      define_attribute_method name
      define_include_method name
    end

    def define_attribute_method(name)
      unless method_defined?(name)
        define_method name do
          value = self.default_href if name == :href
          value ||= @model.send(name)
          value = value.to_s if name == :id
          value
        end
      end
    end

    def define_include_method(name)
      method = "include_#{name}?".to_sym

      unless method_defined?(method)
        define_method method do
          @context[method].nil? || @context[method]
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
restpack_serializer-0.4.25 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.24 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.23 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.21 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.20 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.19 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.18 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.17 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.16 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.15 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.14 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.13 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.12 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.11 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.10 lib/restpack_serializer/serializable/attributes.rb
restpack_serializer-0.4.9 lib/restpack_serializer/serializable/attributes.rb