将 Table 列值哈希为整数

Hash Table Column Values as Integer

我已经按照 this tutorial 在我的模型上添加了一个哈希列,效果很好。

当我在 rails console 中编写代码时,它在我的控制器代码中变得不同。在控制台中:

Foo.update_attributes(bar: {"a" => 1, "b" => 2})

我的值在控制台中显示为整数。在我的控制器中,如果我正在进行计算,我必须添加 .to_i.to_f 并且它变得混乱。我的价值观将永远是一个数字。我可以简单地为该列添加一个 int 或 float 吗?

add_column :foos, :bar, :hstore, :integer, default: {}, null: false

上面的不行。

您可以在模型上使用挂钩:

before_save -> r { r.bar.each{|k, v| r.bar[k] = v.to_i} }