gpt4 book ai didi

ruby-on-rails - 在 Rails before_save 方法中大写多个属性

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

我想使用 before_save 方法将模型实例的 first_namelast_name 大写。我当然可以这样做:

before_save do 
self.first_name = first_name.capitalize
self.last_name = last_name.capitalize
end

但我更愿意一次性改变这两个属性。有没有办法在我的模型中选择某些列并对其应用所需的方法?

最佳答案

你可以这样做

before_save :capitalize_attributes

private
def capitalize_attributes
capitalizable = ["first_name","last_name"]
self.attributes.each do |attr,val|
#based on comment either of these will work
#if you want to store nil in the DB then
self.send("#{attr}=",val.strip.capitalize) if capitalizable.include?(attr) && !val.nil?
#if you want to store a blank string in the DB then
self.send("#{attr}=",val.to_s.strip.capitalize) if capitalizable.include?(attr)
end
end

然后您只需将要大写的属性添加到capitalizable 数组即可。我使用类似的代码来 upcase 某些模型中的所有字符串,只是为了保持数据清洁一致。

关于ruby-on-rails - 在 Rails before_save 方法中大写多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244488/

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