如何使用acts_as_taggable_on设置“每个标签的最大长度验证”?

时间:2012-12-08 19:55:04

标签: ruby-on-rails ruby-on-rails-3 acts-as-taggable-on

我刚刚为User模型设置了验证。我的用户模型中的代码就是这样的。
如果我想为每个标签添加最大长度验证,我应该添加什么?
如果可能的话,我也想知道更简单的方法来编写那些整个验证。

  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'

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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