2

我使用的ActiveAdmin,如果我編輯一個條目,並保留一個TEXT字段爲空白,在數據庫它被設置爲空字符串 - 當它真的應該被設置爲NULL(和模式允許NULL字段)。Rails沒有爲數據庫中的文本字段設置NULL?

有沒有其他人遇到過這個問題並解決了它?

+1

我會認爲這是一個功能,而不是一個問題。如果可能,應避免數據庫中的NULL字段。他們通常只是搞亂了數據的完整性,並且可能會爲開發人員帶來一大堆問題。是否有你想要(或需要)數據庫中的NULL值的實際原因?您可以閱讀有關NULL值可能導致的一些問題:http://www.databasedesign-resource.com/null-values-in-a-database.html – Frost 2011-12-18 13:02:50

回答

4

(自評感動,因爲我發現越來越多的說一下):

我沒有用過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 
+0

謝謝,那個寶石解決了這個問題。 – Jacob 2011-12-18 13:25:23

相關問題