在保存到数据库之前,我必须为每条记录删除空格。我可以通过为每列指定空格来做到这一点,但当每条记录中有100列时,这是一件痛苦的事情,代码行数也会大大增加。
需要帮助将代码转换为循环,但作为一个业余爱好者,我无法完成它。
class hello < ActiveRecord::Base
before_validation :remove_spaces
def remove_spaces
self.login = self.login.strip if self.login.present?
self.email = self.email.strip if self.email.present?
. so on .......
end
end
2条答案
按热度按时间ni65a41a1#
我将使用
attributes.each
迭代当前示例的所有属性名和值(忽略属性名)。对于每一个值,我会调用
try(:strip!)
来去掉值中的空格,请注意try
只在实际上是respond_to?(:strip!)
的值上调用strip!
,这意味着基本上只是字符串,因此它会忽略nil
值或不支持类型的值,如时间戳或布尔值。或者当您只想清理特定的属性时,那么您可以只迭代它们的名称:
jjjwad0x2#
您可以获取字符串类型的所有列名,如下所示:
现在你可以用一个循环在每一列上应用strip
希望能有所帮助