I have the following code:
params.each do |k, v| if k =~ /something/ ARClass.find_by_blah(v) end end
The "find_by_blah" call fails to return anything and when I print out v.class.name, I get HashWithIndifferentAccess.
WTF? Is it unreasonable for me to expect the value of a params hash element to be String?
Wes
Hey Wes-
I think your problem with this is that in an iteration over the params hash, the v part can also be another hash in order to support nested hashes in params. So like this:
>> params = { :foo => 'bar', :baz => {:nik => 'nak'}} => {:baz=>{:nik=>"nak"}, :foo=>"bar"} >> params.each {|k,v| p v } {:nik=>"nak"} "bar"
So you see one of the values in that hash is a string but another is a nested hash. I think this is what is causing you confusion. You need to write that method in a recursive way to it traverses the sub hashes as well as the top level ones
Cheers- -Ezra