2016-07-11 10 views
0

Ich habe this tutorial gefolgt, um eine Hash-Spalte auf meinem Modell, die gut funktioniert.Hash-Tabelle Spalte Werte als Integer

Wenn ich Codes im rails console ausarbeite, wird es innerhalb meines Controller-Codes anders. In der Konsole:

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

Meine Werte werden als eine ganze Zahl in der Konsole angezeigt. In meinem Controller, wenn ich Berechnungen mache, muss ich hinzufügen .to_i oder .to_f und es wird unordentlich. Meine Werte werden für immer eine Nummer sein. Kann ich einfach ein int oder float für die Spalte hinzufügen?

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

Das obige funktioniert nicht.

+0

, was Sie mit „Sie werden als ganze Zahl dargestellt“. Du meinst, wenn du Klasse auf den Wert rufst, der dir 'Fixnum' zeigt? – lcguida

Antwort

0

Sie einen Haken an Ihrem Modell verwenden können:

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