0

我在 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

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

4

2 回答 2

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)
于 2016-01-21T12:16:37.300 回答
1

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

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

  def value
    value.to_i
  end 
end
于 2016-01-21T12:20:59.860 回答