2

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

2 回答 2

3

尝试:

def make_uppercase
  self.registration.upcase!
end

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

于 2015-11-12T13:57:33.930 回答
3

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

或重新定义这样的方法:

def make_uppercase
  self.registration = self.registration.upcase
end
于 2015-11-12T13:57:56.513 回答