Rails:before_save upcase私有方法

时间:2015-11-12 13:46:09

标签: ruby-on-rails before-save

我的模型中有两个方法,它们在将注册字段插入数据库之前对其进行更改。 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

2 个答案:

答案 0 :(得分:3)

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

或重新定义这样的方法:

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

答案 1 :(得分:2)

尝试:

def make_uppercase
  self.registration.upcase!
end

bang方法(upcase!)修改接收器 - 在这种情况下是self.registration。