Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails在模型中将字符串自动转换为整数时前导零的标识_Ruby On Rails_Ruby_Leading Zero - Fatal编程技术网

Ruby on 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)

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

如果要保留有关字符串的原始信息,请将其存储为字符串而不是整数。然后,如果需要,您可以添加一个方法将其转换为整数,或者当您使用它并希望将其用作数字时,只需对其调用“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模型。这和我最后使用的不太一样,但这个答案在提出解决方案时最有用。谢谢。虽然不是我最后使用的答案,但这个答案在提出解决方案时是最有用的。谢谢