如何跳过验证(在 gem 上充当可标记)
How to skip validation(acts as taggable on gem)
我正在尝试弄清楚如何向用户添加标签 table 并跳过验证(密码等)或其他内容。
user.rb
class User < ActiveRecord::Base
authenticates_with_sorcery!
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates :password, length: { in: 6..20 }
acts_as_taggable_on :tags
end
settings_controller.rb
class SettingsController < ApplicationController
def add_tag
current_user.tag_list.add(params[:name])
current_user.save!
redirect_to :back
end
end
然后我得到错误验证Validation failed: Password is too short (minimum is 6 characters)
。如何解决这个问题?
删除:
validates :password, length: { in: 6..20 }
来自模型。
您的密码有这两个验证:
validates_presence_of :password, :on => :create
validates :password, length: { in: 6..20 }
第一个:validates_presence_of :password, :on => :create
将确保当您 create
用户时密码存在。如果密码不存在,将不允许创建用户。
第二次验证:validates :password, length: { in: 6..20 }
将确保密码的长度必须在 6 到 20 之间。
因此,如果您想向现有用户添加标签,即更新用户,那么您只需删除此验证:validates :password, length: { in: 6..20 }
或仅在 create
上执行此验证,如下所示:
validates :password, length: { in: 6..20 }, :on => :create
这样,更新用户时不会失败,验证将仅适用于 create
操作,并允许您更新记录而不会失败。
我正在尝试弄清楚如何向用户添加标签 table 并跳过验证(密码等)或其他内容。
user.rb
class User < ActiveRecord::Base
authenticates_with_sorcery!
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates :password, length: { in: 6..20 }
acts_as_taggable_on :tags
end
settings_controller.rb
class SettingsController < ApplicationController
def add_tag
current_user.tag_list.add(params[:name])
current_user.save!
redirect_to :back
end
end
然后我得到错误验证Validation failed: Password is too short (minimum is 6 characters)
。如何解决这个问题?
删除:
validates :password, length: { in: 6..20 }
来自模型。
您的密码有这两个验证:
validates_presence_of :password, :on => :create
validates :password, length: { in: 6..20 }
第一个:validates_presence_of :password, :on => :create
将确保当您 create
用户时密码存在。如果密码不存在,将不允许创建用户。
第二次验证:validates :password, length: { in: 6..20 }
将确保密码的长度必须在 6 到 20 之间。
因此,如果您想向现有用户添加标签,即更新用户,那么您只需删除此验证:validates :password, length: { in: 6..20 }
或仅在 create
上执行此验证,如下所示:
validates :password, length: { in: 6..20 }, :on => :create
这样,更新用户时不会失败,验证将仅适用于 create
操作,并允许您更新记录而不会失败。