1
私はテーブル - boot_camps
を持っています。フィールドはprice
で、スキーマ内の小数点(8,2)です。何らかの理由で値が文字列に変換されるようです。このエラーでRails + Postgres - データベースに文字列として小数点が格納されています
validates :price, numericality: { greater_than: 0 }
:それは、モデルで検証が失敗します ArgumentError: comparison of String with 0 failed
schema.rb:
create_table "boot_camps", force: :cascade do |t|
t.string "title"
t.decimal "price", precision: 8, scale: 2
t.integer "capacity"
t.date "start_date"
t.date "end_date"
end
私はpsqlで\d boot_camps
を実行する場合、私は得る:
Table "public.boot_camps"
Column | Type |
Modifiers
-------------------+-----------------------------+---------------------
id | integer | not null default
title | character varying |
price | numeric(8,2) |
capacity | integer |
start_date | date |
end_date | date |
しかし、BooCampレコードは、レールコンソールで表示されますeは、示しています
#<BootCamp:0x007fc3a8e7abd0> {
:id => 1,
:title => "test",
:price => "30.00",
:capacity => 11,
:start_date => nil,
:end_date => nil,
}
と
BootCamp.last.price.class //=> String < Object
感謝を。
この記事をチェックしてください(これはRailsでこれを克服する理由とその方法を説明しています):http://justinmccormick.com/wp/programming/ポストグラスとグレープシティー - デシマル - 文字列として現れる –