How to iterate of the attributes of an object?

R

Rich Sturim

I need to build a string of all populated attributes of a given object.

I need to get the attribute name and it's value

Also,the object may have 10 attributes, but I'm only interested in the
attribute that are not nil.



here's a sample object:
foo = Foo.new:)bar => 'baz', :bar2 => 'baz2', :bar3 => 'baz3')


ultimately what I want is this as a string like this:
":bar => 'baz', :bar2 => 'baz2', :bar3 => 'baz3'"

code should be something like this? (sorry I'm a newbie)

s = ""

foo.instance_values.each do |v|
s += ":#{v.name} => #{v.value}"
end

s.split(",")
 
L

Li Chen

Rich said:
I need to build a string of all populated attributes of a given object.

I need to get the attribute name and it's value

Also,the object may have 10 attributes, but I'm only interested in the
attribute that are not nil.



here's a sample object:
foo = Foo.new:)bar => 'baz', :bar2 => 'baz2', :bar3 => 'baz3')


ultimately what I want is this as a string like this:
":bar => 'baz', :bar2 => 'baz2', :bar3 => 'baz3'"

code should be something like this? (sorry I'm a newbie)

s = ""

foo.instance_values.each do |v|
s += ":#{v.name} => #{v.value}"
end

s.split(",")


C:\Documents and Settings\chen73>irb
irb(main):001:0> foo = {:bar => 'baz', :bar2 => 'baz2', :bar3 => 'baz3'}
=> {:bar3=>"baz3", :bar=>"baz", :bar2=>"baz2"}
irb(main):002:0> foo.each{|k,v| puts "#{k} "+"=>"+"#{v}" }
bar3 =>baz3
bar =>baz
bar2 =>baz2
=> {:bar3=>"baz3", :bar=>"baz", :bar2=>"baz2"}

Li
 
S

Sebastian Hungerecker

Rich said:
I need to build a string of all populated attributes of a given object.

I need to get the attribute name and it's value

Define "attribute". You can print a list of instance variables and their
values like this:
puts instance_variables.map {|var| "#{var}: #{instance_variable_get(var)}"}

HTH,
Sebastian
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,175
Latest member
Vinay Kumar_ Nevatia
Top