在自动将字符串转换为模型中的整数时,Rails识别前导零

时间:2016-01-21 11:51:18

标签: ruby-on-rails ruby leading-zero

我在Rails中有一个接受整数值的模型。有时候它会以带有前导零的字符串的形式提交,我可以选择将其作为字符串输出,后面带有前导零。

我可以在数据库中存储为字符串,但我想知道是否还有其他方法。以下简化代码。

s = Speed.create(value: "03", measurement: "KPH")
expect(s.value).to eq(3)
expect(s.to_s).to eq("03KPH") # FAILS, returns "3KPH"
expect(s.padding).to eq(1) # FAILS, returns 0

我在数据库中有一个填充字段,用于存储前导零的数量。

2 个答案:

答案 0 :(得分:2)

如果要保留有关字符串的原始信息,请将其存储为字符串而不是整数。然后,您可以根据需要添加一个方法将其转换为整数,或者只需调用" to_i"在你使用它并希望将其用作数字时。

您可以将测试更改为

s = Speed.create(value: "03", measurement: "KPH")
expect(s.value.to_i).to eq(3)
expect(s.to_s).to eq("03KPH") 
expect(s.padding).to eq(1)

答案 1 :(得分:1)

您可以通过执行以下操作来手动设置/获取活动记录属性

class Speed < ActiveRecord::Base
  def value=(i)
    self.value = i 
  end 

  def value
    value.to_i
  end 
end