Ruby on rails Rails在模型中将字符串自动转换为整数时前导零的标识
我在Rails中有一个接受整数值的模型。有时它是作为一个带前导零的字符串提交的,我希望以后可以选择将它作为一个带前导零的字符串输出 我可以在数据库中存储为字符串,但我想知道是否还有其他方法。下面是简化的代码Ruby on rails Rails在模型中将字符串自动转换为整数时前导零的标识,ruby-on-rails,ruby,leading-zero,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)
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)
如果要保留有关字符串的原始信息,请将其存储为字符串而不是整数。然后,如果需要,您可以添加一个方法将其转换为整数,或者当您使用它并希望将其用作数字时,只需对其调用“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)
您可以通过执行以下操作手动设置/获取活动记录属性
class Speed < ActiveRecord::Base
def value=(i)
self.value = i
end
def value
value.to_i
end
end
类速度
您可以通过执行以下操作手动设置/获取活动记录属性
class Speed < ActiveRecord::Base
def value=(i)
self.value = i
end
def value
value.to_i
end
end
类速度
Speed是活动记录模型还是自定义类?如果是自定义的,你能显示代码吗?这个<代码>%02d“%3#=>”03“@JonCairns,它是标准的ActiveRecord模型。Speed
是活动记录模型还是自定义类?如果是自定义的,你能显示代码吗?这个<代码>%02d”%3#=>“03”@JonCairns,这是一个标准的ActiveRecord模型。这和我最后使用的不太一样,但这个答案在提出解决方案时最有用。谢谢。虽然不是我最后使用的答案,但这个答案在提出解决方案时是最有用的。谢谢