gpt4 book ai didi

ruby-on-rails - 在保存到 Rails 框架之前,如何通过循环去除 Active Record 中的列值?

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:41 24 4
gpt4 key购买 nike

在保存到数据库之前,我必须删除每条记录的空格。我可以通过为每一列指定它来做到这一点,但是当每条记录中有 100 列时,这会很痛苦,而且代码行数不会大幅增加。

在将代码更改为循环时需要帮助,但作为 rails 的业余爱好者,我无法完成它。

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

最佳答案

我希望 attributes.each 遍历所有属性名称和当前实例的值(同时忽略属性名称)。对于每个值,我会调用 try(:strip!) 从值中去除空格。请注意,try 仅在实际 respond_to strip 的值上调用 strip!(这意味着基本上只是字符串),因此它会忽略 nil 值或不受支持的类型的值 - 如时间戳或 bool 值。

before_validation :sanitize_strings

private
def sanitize_strings
attributes.each { |_, value| value.try(:strip!) }
end

或者当您只想清理特定属性时,您可以只遍历它们的名称:

ATTRIBUTES_TO_SANITIZE = %i[name title description]

def sanitize_strings
ATTRIBUTES_TO_SANITIZE.each { |attr| send(attr).try(:strip!) }
end

关于ruby-on-rails - 在保存到 Rails 框架之前,如何通过循环去除 Active Record 中的列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53133773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com