如何在模型中创建过滤器以将文本解析为整数?

时间:2017-10-10 15:40:44

标签: ruby-on-rails ruby-on-rails-5

模型有一个名为:size的整数字段。我在控制器中使用#update model_params。我知道我可以在控制器中创建一个方法,在设置模型中的值之前从size解析params[:size],但我想知道是否可以直接在模型中创建过滤器。我试过了

  validate :size_validation
  def size_validation
    size_number = human_to_number self.size
    if size_number < 1_000_000
      errors.add(:size, "has to be greater than USD $1 million")
    else
      self.size = size_number
    end
  end
  def human_to_number(human) ... end

但它没有奏效并且给出了错误&#34;未定义的方法&#39; downcase!&#39; 45:Fixnum&#34;。然后我尝试了callback

  validates :size, numericality: {only_integer: true, greater_than: 1_000_000}
  before_update do      ###### also tried after_update
    self.size = human_to_number self.size
  end

但这会产生验证错误&#39;尺寸不是数字&#39;。

0 个答案:

没有答案