Rails :before_save 大写私有方法

Rails :before_save upcase private method

我的模型中有两种方法可以在将注册字段插入数据库之前对其进行更改。 strip_whitespace 方法有效。但是,make_uppercase 没有。

我也试过 只是 make_uppercase 方法传递给 before_save 回调。任何帮助将不胜感激。

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

尝试:

def make_uppercase
  self.registration.upcase!
end

bang 方法(大写!)修改接收器 - 在本例中为 self.registration。

我认为你应该使用 upcase! 而不仅仅是 upcase

或者像这样重新定义方法:

def make_uppercase
  self.registration = self.registration.upcase
end