2011-11-30 43 views
0

我想限制數據的大小,如果超過了,我希望它縮小到極限。有沒有簡單的方法來做到這一點?Ruby on rails - 驗證條目的收縮長度

我的驗證碼:

validates :title, :presence => true, :length => { :maximum => 80 } 

例如數據是:

Lorem存有悲坐阿梅德,consectetur adipisicing ELIT,sed的做eiusmod tempor incididunt UT labore等dolore

我希望它被縮小爲:

Lorem存有悲坐阿梅德,consectetur adipisicing ELIT,SED做eiusmod溫度...

回答

1

請參考ActiveRecord callbacks,你應該在before_validation做到這一點。您可以使用ActiveSupport提供的String#truncate截斷字符串。

實施例:

before_validation do 
    self.title = title.truncate(80, :omission => '...') 
end 
1

我只想把這個在before_create功能,因爲你是不是真的驗證任何東西 - 你只是想要的數據更改在某些條件下。此外,您可能需要考慮保留長標題並製作一個像short_title這樣的功能,以返回縮小的版本 - 這會爲您提供相同的功能,最終您可能需要更長的標題。

before_create :shrink_title 

... 

def shrink_title 
    self.title = title[0...77] + '...' if title.length > 80 
end 

def short_title 
    (title.length > 80) ? title[0...77] + '...' : title 
end