2012-06-30 73 views
1

我進入了串場5KB文本(VARCHAR(255)),並收到此錯誤:Rails的:數據太長

Mysql2::Error: Data too long for column 'title' at row 1: INSERT INTO `posts`.... 

什麼是解決這個問題的最好方法?
我應該在模型中的before_save中將此文本切爲255嗎?
或修復控制器中的參數[:that_field]?
還有其他解決方案嗎?

回答

11

解決方案取決於您想要實現的目標。這都是關於用戶體驗的。

如果您希望用戶能夠輸入此字段的長度超過255個字符的數據,請將字段從:string更改爲:text

如果您不希望數據長於255,那麼您有兩個選項。如果您希望能夠向用戶提供驗證消息,請將validation添加到您的Post型號中。

class Model < ... 
    validates_length_of :title, :maximum => 255 
end 

第三種選擇,如果你不介意的消息,使用回調(例如:before_save)將其寫入到數據庫之前修剪值。如果您希望字符串在被設置後被截斷,您也可以覆蓋該屬性的默認設置器。

+0

如果我想使用第二種解決方案,我需要用'until @ object.save''render'new''直接重新顯示錶單給用戶,出錯。 – DmitryR

+1

是的,沒錯。 –

+0

系統答案;珍稀動物。謝謝。 – yeyo