Uppercase all row columns

Hi.

I have to convert the contents of all columns to uppercase before
creating a row. Is there an easy way to accomplish this so I don’t
have to go one column at a time and upcase! it?

Thanks.

Pepe

I have to convert the contents of all columns to uppercase before
creating a row. Is there an easy way to accomplish this so I don’t
have to go one column at a time and upcase! it?

Right a before_save filter on your model to loop through each of the
attributes and uppercase them (but only if they are strings!)

-philip

That’s what I am doing right now. I have a before_save filter, but I
am upcasing each one column individually. How would I loop through the
attributes and check for the attribute type?

Thanks.

Thanks!

Pepe

Sorry, I talked to fast. I tried it and after a little bit of
research, what ‘attributes’ generates is a hash with the name of the
column and it’s content, not the column type. Any idea how I can get
that information?

Thanks.

On Jul 10, 2008, at 12:11 PM, pepe wrote:

That’s what I am doing right now. I have a before_save filter, but I
am upcasing each one column individually. How would I loop through the
attributes and check for the attribute type?

Something like this:

p = Product.find(:first)
p.attributes.each_pair do |k,v|
puts “#{k} is a string” if v.is_a?(String)
end
name is a string
description is a string
sku is a string

Now, this is in console so you’ll need to twittle ‘p’ to use self and
obviously change the attributes instead of printing something out, but
that’s the general idea.

I think I got it:

e = Employee.new()
e.attributes.each_pair do |k,v|
puts “#{k} is a #{e.column_for_attribute(k).klass}”
end

LNAME is a String
FNAME is a String
DOB is a Date

Thanks so much! You put me in the right direction. :slight_smile:

Pepe