我在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
我在数据库中有一个填充字段,用于存储前导零的数量。
答案 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