2012-12-08 35 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