我使用的ActiveAdmin,如果我編輯一個條目,並保留一個TEXT字段爲空白,在數據庫它被設置爲空字符串 - 當它真的應該被設置爲NULL(和模式允許NULL字段)。Rails沒有爲數據庫中的文本字段設置NULL?
有沒有其他人遇到過這個問題並解決了它?
我使用的ActiveAdmin,如果我編輯一個條目,並保留一個TEXT字段爲空白,在數據庫它被設置爲空字符串 - 當它真的應該被設置爲NULL(和模式允許NULL字段)。Rails沒有爲數據庫中的文本字段設置NULL?
有沒有其他人遇到過這個問題並解決了它?
(自評感動,因爲我發現越來越多的說一下):
我沒有用過ActiveAdmin,但是......有什麼理由爲空字符串不會被存儲爲空字符串,但NULL?
我認爲空字符串到零的轉換不應該是自動的,因爲它至少違反了意外。我會很感激一個文檔參考陳述相反,如果我錯了......
作爲解決它,我想這可能做的伎倆:
before_validation do
self.mytextfield = nil if self.mytextfield && self.mytextfield.empty?
end
或者,更系統,this gem 。
class MyModel < ActiveRecord::Base
nilify_blanks :only => [:mytextfield]
end
謝謝,那個寶石解決了這個問題。 – Jacob 2011-12-18 13:25:23
我會認爲這是一個功能,而不是一個問題。如果可能,應避免數據庫中的NULL字段。他們通常只是搞亂了數據的完整性,並且可能會爲開發人員帶來一大堆問題。是否有你想要(或需要)數據庫中的NULL值的實際原因?您可以閱讀有關NULL值可能導致的一些問題:http://www.databasedesign-resource.com/null-values-in-a-database.html – Frost 2011-12-18 13:02:50