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