3
我似乎無法找到任何方法成功地將小數字段設置爲無格式的值,因爲表單正在返回空字符串。下面是手動將字段設置''
無法將數值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
正如你所看到的,當它沒有設置,或者當它被設置爲零的list_price
場會很樂意節省超級簡單的測試案例。但是,當我使用空白字符串時,它根本不會保存 - 它看起來不是類型轉換。
看來我必須在這裏忽略一些明顯的東西,因爲這是ORM的一個非常基本的用例。
雖然這可以解決問題,但手動操作似乎是荒謬的。這不就是爲什麼我們有ORM嗎? – Emily 2012-03-06 00:00:57
@Emily我發現這個相關的問題:https://github.com/datamapper/dm-core/issues/41。 「...我們決定DataMapper不負責將空字符串轉換爲nils」。他們承認,儘管它對webapps很有用。 – matt 2012-03-06 19:36:35
有趣,謝謝。在我的搜索中,我沒有反駁過。不幸的是,它似乎並沒有像線程中所建議的那樣將它變成dm-rails。我結束了猴子補丁'typecast'來支持它。 – Emily 2012-03-06 20:28:31