Rails :before_save 大写私有方法
Posted
技术标签:
【中文标题】Rails :before_save 大写私有方法【英文标题】:Rails :before_save upcase private method 【发布时间】:2015-11-12 13:46:09 【问题描述】:我的模型中有两种方法可以在将注册字段插入数据库之前对其进行更改。 strip_whitespace
方法有效。但是,make_uppercase
没有。
我也尝试将make_uppercase
方法传递给before_save
回调just。任何帮助将不胜感激。
class Vehicle < ActiveRecord::Base
belongs_to :vehicle_class
belongs_to :vehicle_make
before_save :strip_whitespace, :make_uppercase
# Strip whitespace from registration field before inserting it in to the DB
def strip_whitespace
self.registration.gsub!(/\s+/, '')
end
# Make all characters uppercase before inserting it in to the DB
def make_uppercase
self.registration.upcase
end
private :strip_whitespace, :make_uppercase
end
【问题讨论】:
【参考方案1】:试试:
def make_uppercase
self.registration.upcase!
end
bang 方法(大写!)修改接收器 - 在本例中为 self.registration。
【讨论】:
【参考方案2】:我认为你应该使用upcase!
而不仅仅是upcase
或者像这样重新定义方法:
def make_uppercase
self.registration = self.registration.upcase
end
【讨论】:
谢谢 Zozo,@AndreOgle 刚刚打败了你。非常感谢您抽出宝贵的时间。以上是关于Rails :before_save 大写私有方法的主要内容,如果未能解决你的问题,请参考以下文章
带有 MD5 摘要的 Rails 模型 before_save