Rails 在模型中自动将字符串转换为整数时识别前导零
Rails identification of leading zeroes when automatically converting a string to an integer in a model
我在 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
我在数据库中有一个填充字段,用于存储前导零的数量。
如果要保留有关字符串的原始信息,请将其存储为字符串而不是整数。然后,如果需要,您可以添加一个方法将其转换为整数,或者在您使用它并想将其用作数字时调用 "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)
您可以通过执行以下操作手动 set/get 您的活动记录属性,
class Speed < ActiveRecord::Base
def value=(i)
self.value = i
end
def value
value.to_i
end
end
我在 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
我在数据库中有一个填充字段,用于存储前导零的数量。
如果要保留有关字符串的原始信息,请将其存储为字符串而不是整数。然后,如果需要,您可以添加一个方法将其转换为整数,或者在您使用它并想将其用作数字时调用 "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)
您可以通过执行以下操作手动 set/get 您的活动记录属性,
class Speed < ActiveRecord::Base
def value=(i)
self.value = i
end
def value
value.to_i
end
end