如何设置最小和最大标签数?

时间:2014-06-20 03:28:36

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

我正在使用acts-as-taggable-on gem,我正在尝试对标签数量进行某种验证。我遵循了本教程,它工作正常:http://railscasts.com/episodes/382-tagging

我有一篇文章可以作为标记。现在我确认需要存在标签和字符数:

class Article < ActiveRecord::Base
  acts_as_taggable
  validates :tag_list, presence: true, length: { maximum: 100 }
end

对于标签来说,这不是一个很好的解决方案,因为它们中有许多具有许多不同的大小,并且用逗号分隔。如何设置需要与文章连接的所需最小和最大标签数?我想将最小值设置为3个标签,最多设置为10个标签,因此文本长度不是一个好的解决方案。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

此示例应指向正确的方向:

validate :tag_list_validation

def tag_list_validation
  errors[:tag_list] << "3 tags minimum" if tag_list.count < 3
  errors[:tag_list] << "10 tags maximum" if tag_list.count > 10
  self.tag_list.each do |tag|
    errors[:tag_list] << "#{tag} must be shorter than 100 characters maximum" if tag.length > 100
  end
end

编辑:解决您的问题:

class Article < ActiveRecord::Base
  acts_as_taggable

  validate :tag_list_count

  def tag_list_count
    errors[:tag_list] << "3 tags minimum" if tag_list.count < 3
    errors[:tag_list] << "10 tags maximum" if tag_list.count > 10
  end
end