我有一个带有Profit字段的用户模型。利润字段是DECIMAL(11,0)类型。我在表格上有一个 mask 的输入,允许用户输入类似$ 1,000的内容。我想格式化该值并从中删除除数字以外的所有内容,因此我将保存1000。这是我到目前为止所拥有的:

class User < ActiveRecord::Base
  before_save :format_values

  private

  def format_values
    self.profit.to_s.delete!('^0-9') unless self.profit.nil?
  end
end

但是它一直将0保存在数据库中。看起来它正在将其转换为十进制格式之前的十进制格式。

最佳答案

试试这个:

def profit=(new_profit)
  self[:profit] = new_profit.gsub(/[^0-9]/, '')
end

关于ruby-on-rails - 在Rails 3中保存到数据库之前如何格式化值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10214950/

10-13 00:38