2011-11-10 46 views
12

確保模型從字符串值修剪前導和尾隨空白的最簡單方法是什麼?如何從模型屬性中刪除空格?

一種不方便的方式似乎是before_save過濾器 - 儘管對於從字符串中刪除空白的常見操作,也許有一些配置可以實現這一點?

+0

我不知道任何配置regrading,但在before_validation掛鉤的情況下,您可以檢查此:http://stackoverflow.com/questions/4294923/rails-3-strip-whitespace-before-validation-on-所有表格 – sparrovv

+0

查看[此處的實現](http://railsforum.com/viewtopic.php?id=969)。 – Zabba

回答

9

由於您不希望總是這樣做,所以沒有內置的全局/配置設置,因此最好根據您的描述在個案基礎上完成,並在strip(field)之前的過濾器中完成。儘管雅各布詳細描述了一種可用的寶石。

我還建議在對用戶值進行任何操作時小心謹慎。常見的最佳做法是保存用戶輸入的「任何」,「疣和所有」(好的,在這種情況下,空格)。然後在內部操作並根據需要進行格式顯示。
這裏推理的主線是,當用戶重新編輯他們的信息時,最好給他們'他們之前輸入的內容',而不是陷入可能導致複雜的驗證和非常脆弱的用戶界面。

另一方面,請務必使用'適當的數據'字段,例如不要在字符串中存儲日期,這是在招惹麻煩。

2

我只是在驗證之前運行一個過濾器,並通過所有的參數來修剪它們。如果你把它放在你的基礎控制器類上,你只需設置它並忘記它。

0

您還可以使用回調去掉空白而不使用寶石。