Module: ActiveRemote::AttributeMethods

Extended by:
ActiveSupport::Concern
Included in:
Base
Defined in:
lib/active_remote/attribute_methods.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#[](attr_name) ⇒ Object



11
12
13
14
15
# File 'lib/active_remote/attribute_methods.rb', line 11

def [](attr_name)
  name = attr_name.to_s
  name = self.class.attribute_aliases[name] || name
  attribute(name.to_s)
end

#[]=(attr_name, value) ⇒ Object



17
18
19
20
21
# File 'lib/active_remote/attribute_methods.rb', line 17

def []=(attr_name, value)
  name = attr_name.to_s
  name = self.class.attribute_aliases[name] || name
  _write_attribute(name.to_s, value)
end

#attribute_for_inspect(attr_name) ⇒ Object

Returns an #inspect-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 :db format. Other attributes return the value of #inspect 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]"


39
40
41
42
43
44
45
46
47
48
49
# File 'lib/active_remote/attribute_methods.rb', line 39

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

#attribute_namesObject



51
52
53
# File 'lib/active_remote/attribute_methods.rb', line 51

def attribute_names
  @attributes.keys
end