2012-12-08 36 views
2

我剛剛爲用戶模型設置了驗證。我的用戶模型中的代碼就像這樣。
如果我想爲每個標籤添加最大長度驗證,我應該添加什麼?
我也想知道如果可能的話,更短的方式來編碼整個驗證。如何使用acts_as_taggable_on設置'每個標籤的最大長度驗證'?

acts_as_taggable_on :tags 
    validates_presence_of :tag_list, 
         :message => "Create at least 1 tag" 
    validates_size_of  :tag_list, 
         :maximum => 4, 
         :message => '4 tags maximum' 

回答

1

我嘗試了很多東西,終於讓我找到了如何解決!
這使得它做工精細:)

validate :max_tag_size 
def max_tag_size 
errors[:tag_list] << "2 tags maximum" if tag_list.count > 2 
self.tag_list.each do |tag| 
    errors[:tag_list] << "#{tag} must be shorter than 10 characters maximum" if tag.length > 10 
end 
end 
+0

ah tag_list給出一個數組? – Lichtamberg

+0

是的,它確實:) – HUSTEN

2
validate :max_tag_size # HERE WITH VALIDATE - NOT VALIDATES! 

def max_tag_size 
    errors[:tag_list] << "4 tags maximum" if self.tag_list.split(",").count > 4 
    errors[:tag_list] << "tag lenght < 10 letters " if self.tag_list.split(",").collect(&:length).max >= 10 
end 
+0

我想你的代碼,但我可以節省標籤,如果他們不與驗證匹配。 – HUSTEN

+0

對不起在我的代碼中有一個錯誤...刪除s驗證... – Lichtamberg

+0

它看起來不工作。事實上,它確實保存記錄,即使它不能滿足你的驗證檢查:( – HUSTEN