Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何设置';每个标签的最大长度验证';带着作为标签的角色?_Ruby On Rails_Ruby On Rails 3_Acts As Taggable On - Fatal编程技术网

Ruby on rails 如何设置';每个标签的最大长度验证';带着作为标签的角色?

Ruby on rails 如何设置';每个标签的最大长度验证';带着作为标签的角色?,ruby-on-rails,ruby-on-rails-3,acts-as-taggable-on,Ruby On Rails,Ruby On Rails 3,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,

我只是为用户模型设置了验证。我的用户模型中的代码就是这样。
如果我想为每个标签添加最大长度验证,我应该添加什么 如果可能的话,我还想知道编写整个验证的较短方法

  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'
validate:max_tag_size#这里有validate-NOT VALIDATES!
def最大标签尺寸
错误[:标记列表]4
错误[:标记列表]=10
结束

我尝试了很多方法,终于找到了解决方法
这使它运行良好:)

验证:最大标签大小
def最大标签尺寸
错误[:标记列表]2
self.tag|list.each do|tag|
错误[:标记列表]10
结束
结束

我尝试了您的代码,但如果标记与这些验证不匹配,我可以保存它们。它看起来不起作用。事实上,即使它不满足您的验证检查,它也会保存记录:(ah tag_list返回一个数组?
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
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