use*_*826 15 ruby database sqlite activerecord ruby-on-rails
我想在将字段保存到数据库之前将字段从表单更改为小写.这是我的代码,但数据库的输出仍然是大写的,为什么代码不工作?
class Transaction < ActiveRecord::Base
   validates :name, presence: true
   validates :amount, presence: true, numericality: true
   before_save :downcase_fields
   def downcase_fields
      self.name.downcase
   end
end
Ger*_*osi 27
downcase返回字符串的副本,不修改字符串本身.downcase!改为使用:
def downcase_fields
  self.name.downcase!
end
有关详细信息,请参阅文档
您没有name通过运行设置为小写self.name.downcase,因为#downcase它不会修改字符串,而是返回它。你应该使用 bangdowncase方法
self.name.downcase!
但是,我喜欢在模型中采用另一种方式:
before_save { name.downcase! }
| 归档时间: | 
 | 
| 查看次数: | 11695 次 | 
| 最近记录: |