diff --git a/app/logical/tag_name_validator.rb b/app/logical/tag_name_validator.rb index 63690f9ec..029a8c5c0 100644 --- a/app/logical/tag_name_validator.rb +++ b/app/logical/tag_name_validator.rb @@ -1,6 +1,12 @@ class TagNameValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) - case Tag.normalize_name(value) + value = Tag.normalize_name(value) + + if value.size > 170 + record.errors.add(attribute, "'#{value}' cannot be more than 255 characters long") + end + + case value when /\A_*\z/ record.errors.add(attribute, "'#{value}' cannot be blank") when /\*/ diff --git a/test/unit/tag_test.rb b/test/unit/tag_test.rb index 43a06af12..0c4bd3dce 100644 --- a/test/unit/tag_test.rb +++ b/test/unit/tag_test.rb @@ -185,6 +185,7 @@ class TagTest < ActiveSupport::TestCase should_not allow_value("café").for(:name).on(:create) should_not allow_value("東方").for(:name).on(:create) should_not allow_value("FAV:blah").for(:name).on(:create) + should_not allow_value("X"*171).for(:name).on(:create) metatags = PostQueryBuilder::METATAGS + TagCategory.mapping.keys metatags.each do |metatag|