Sha256: 761bfb2303e4432665808032e2807bfe8785b2e88fa5a52167fc68f27ad80833

Contents?: true

Size: 1.36 KB

Versions: 7

Compression:

Stored size: 1.36 KB

Contents

module ActiveRemote
  module AttributeMethods
    extend ::ActiveSupport::Concern

    module ClassMethods
      def attribute_names
        @attribute_names ||= attribute_types.keys
      end
    end

    def [](name)
      attribute(name)
    end

    def []=(name, value)
      write_attribute(name, value)
    end

    # Returns an <tt>#inspect</tt>-like string for the value of the
    # attribute +attr_name+. String attributes are truncated up to 50
    # characters, Date and Time attributes are returned in the
    # <tt>:db</tt> format. Other attributes return the value of
    # <tt>#inspect</tt> without modification.
    #
    #   person = Person.create!(name: 'David Heinemeier Hansson ' * 3)
    #
    #   person.attribute_for_inspect(:name)
    #   # => "\"David Heinemeier Hansson David Heinemeier Hansson ...\""
    #
    #   person.attribute_for_inspect(:created_at)
    #   # => "\"2012-10-22 00:15:07\""
    #
    #   person.attribute_for_inspect(:tag_ids)
    #   # => "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]"
    def attribute_for_inspect(attr_name)
      value = attribute(attr_name)

      if value.is_a?(String) && value.length > 50
        "#{value[0, 50]}...".inspect
      elsif value.is_a?(Date) || value.is_a?(Time)
        %("#{value.to_s(:db)}")
      else
        value.inspect
      end
    end

    def attribute_names
      @attributes.keys
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
active_remote-6.0.3 lib/active_remote/attribute_methods.rb
active_remote-6.0.2 lib/active_remote/attribute_methods.rb
active_remote-6.0.1 lib/active_remote/attribute_methods.rb
active_remote-6.0.0.beta lib/active_remote/attribute_methods.rb
active_remote-5.2.0 lib/active_remote/attribute_methods.rb
active_remote-5.2.0.beta lib/active_remote/attribute_methods.rb
active_remote-5.2.0.alpha lib/active_remote/attribute_methods.rb