Before_save :strip_whitespace => saves with spaces


#1

i used this private function for removing leading and trailing white
spaces from the values.that below function would be called before_save.
when i print the value after it strips.it prints string without any
spaces.but in the table fields it saves with spaces .
waht would be the problem.pls help me

class CompanyInfo < ActiveRecord::Base
before_save :strip_whitespace

def strip_whitespace
puts “strip_whitespace”
@attributes.each do |attr,value|
puts value
puts “before strip”
value = value.strip
puts “after strip”
puts value
end

end


#2

On Feb 7, 7:11 am, Newb N. removed_email_address@domain.invalid wrote:

i used this private function for removing leading and trailing white
spaces from the values.that below function would be called before_save.
when i print the value after it strips.it prints string without any
spaces.but in the table fields it saves with spaces .
waht would be the problem.pls help me

because when you do

value = value.strip

you’re not stripping whitespace from value. You are creating a new
string object that has been stripped. The @attributes hash still
contains the unstripped version.

Fred


#3

Thanks for the reply.
Could you tell me the way of implementation pls.
How can i resolve it.

Thanks in advance


#4

I’m updating this older thread based upon my recent experience. This
will not call strip on nils, fixnums, etc.

before_save :strip_whitespace

def strip_whitespaces
@attributes.each do |attr,value|
self[attr] = value.strip if value.is_a?(String)
end
end

On Feb 7 2009, 12:11am, Newb N. removed_email_address@domain.invalid


#5

I’m updating this older thread based upon my recent experience. This
will not call strip on nils, fixnums, etc.

before_save :strip_whitespace

def strip_whitespaces
@attributes.each do |attr,value|
self[attr] = value.strip if value.is_a?(String)

Might also try…

  self[attr] = value.strip if value.respond_to?(:strip)

… to pick up things that aren’t strings, but are string like.


#6

Newb N. wrote:

Thanks for the reply.
Could you tell me the way of implementation pls.
How can i resolve it.

Thanks in advance

change line
value = value.strip
to:
self[attr] = value.strip