How to Convert an Object into a Hash


#1

I have an object (happens to be an ActiveRecord Model), but this is
not a Rails question.

params = { :contract_id => contract_payment[‘contract_id’], :amount =>
contract_payment[‘amount’] }

params = contract_payment.to_hash # This is what I want to do…

I want to “automagically” convert the contract_payment object to a
hash.

I would really appreciate any help.

Thanks,
Jason


#2

On Feb 1, 2007, at 10:45 PM, Jason V. wrote:

I would really appreciate any help.

Thanks,
Jason

Since you are using ActiveRecord you can already get the attributes
hash:

contract_payment.attributes

Cheers-

– Ezra Z.
– Lead Rails Evangelist
– removed_email_address@domain.invalid
– Engine Y., Serious Rails Hosting
– (866) 518-YARD (9273)


#3

I don’t know how the internals of contract_payment’s class is set up,
but you could do this in some cases:
daniel@daniel-desktop:~$ irb

class Car
def initialize(color, make, model_year, owner)
@color, @make, @model_year, @owner = color, make, model_year,
owner

end

end
=> nil

myCar = Car.new(“green”, “Ford”, 2007, “Me!”)
=> #<Car:0xb7bd566c @color=“green”, @owner=“Me!”, @model_year=2007,
@make=“Ford”>

myCar.instance_variables
=> ["@color", “@owner”, “@model_year”, “@make”]

properties = Hash.new
=> {}

myCar.instance_variables.each {|x| properties[x[1…-1]] =
myCar.instance_variable_get(x) }
=> ["@color", “@owner”, “@model_year”, “@make”]

properties
=> {“model_year”=>2007, “make”=>“Ford”, “color”=>“green”,
“owner”=>“Me!”}