0
validates_format_of :tags, :with => /^(([^,]+),){0,3}([^,]+)$/

有了这个验证可能这个正则表达式:

key1, key2, key3, key4

但是我想将每个关键字的字节数限制为最大30,所以这个关键字在正则表达式中是可能的:

keyword with More than 30 bytes

这是规格链接:

https://developers.google.com/youtube/2.0/reference#youtube_data_api_tag_media:keywords

如何将此过滤器添加到上述正则表达式中?

4

2 回答 2

1

我没有检查它,但它应该可以工作:

validate :length_of_tags

def length_of_tags
  _tags = self.tags.split(',').map {|x| x.strip.force_encoding('utf-8')}
  _tags.each do |tag|
    if tag.bytesize >= 30
      errors.add(:tags, "#{tag} is too long")
    end
  end
end
于 2013-04-07T11:58:42.153 回答
0

(回答问题,但不遵守 YouTube 规范)

这个怎么样:

validates_format_of :tags, :with => /^(([^,]{1,30}),){0,3}([^,]{1,30})$/
于 2013-04-07T12:13:03.307 回答