3
フォームが空の文字列を返すので、フォームから十進数フィールドに値を設定しない方法はありません。ここでは手動であなたが見ることができるように、それが設定されていないとき、またはそれがゼロに設定されている場合は、list_price
フィールドは喜んで保存されます''
数字のDataMapperフィールドを空白の値に設定できません
require 'dm-core'
require 'dm-mysql-adapter'
require 'dm-migrations'
DataMapper.setup(:default, 'mysql://localhost/test')
class Product
include DataMapper::Resource
property :id, Serial
property :list_price, Decimal
end
DataMapper.finalize
DataMapper.auto_migrate!
p = Product.new
puts p.save #=> true
p = Product.new(:list_price => '')
puts p.save #=> false
p = Product.new(:list_price => nil)
puts p.save #=> true
にフィールドを設定し、超簡単なテスト・ケースです。しかし、空の文字列を使用すると、まったく保存されません。一見型変換されていないようです。
これはORMのかなり基本的な使用事例なので、私はここではっきりと何かを見逃すはずです。
これで問題は解決しますが、手動で行う必要はありません。 ORMを持っているのはなぜですか? – Emily
@Emilyこの関連する問題が見つかりました:https://github.com/datamapper/dm-core/issues/41。 "...空の文字列をnilsに型キャストするのはDataMapperの責任ではないと判断しました"。彼らはそれがWebアプリケーションのために役に立つと認めている。おかげさまで、ありがとうございます。 – matt
私は検索でそれを振り向いていませんでした。悲しいことに、スレッドで示唆されているように実際にはdm-railsにしていないようです。私はそれをサポートするために猿のパッチを当てた '型キャスト(typecast) 'を終わらせました。 – Emily