thi*_*non 5 validation ruby-on-rails
我正在尝试使用valid?方法在我的模型中进行自定义验证.我需要运行此模型的所有验证,但密码除外.
像这样的东西:
@resource = SalesPartner.new(permitted_params.merge(parent: current_sales_partner))
respond_to do |format|
if @resource.valid?(except: :password)
@resource.generate_authentication_token
SalesPartnerMailer.mail_new_sales_partner(@resource.email,
{ auth_token: @resource.authentication_token, id: @resource.id, level: @resource.level }
).deliver
flash[:success] = "#{@resource.level} criado com sucesso."
format.html { render "#{@path}/index" }
else
logger.log_and_alert_save_error(@resource, flash, "Ocorreu um erro ao salvar.")
format.html { render "#{@path}/new" }
end
end
Run Code Online (Sandbox Code Playgroud)
那可能吗?
感谢大家!
这里的任何方式都是您可以在上下文的帮助下完成的方式.假设您有一个User模型,并且您想要验证某些字段.
validates_presence_of :name,: email, on: :special_context
validates_presence_of :name,:email, :password
Run Code Online (Sandbox Code Playgroud)
有了上面2行,你现在可以在下面这样做
@user.valid?(:special_context)
Run Code Online (Sandbox Code Playgroud)
以上将验证name和email字段.如果你现在写,
@user.valid?
Run Code Online (Sandbox Code Playgroud)
这将执行上存在验证name,email并password为你写的字段.
阅读valid?(context = nil)以了解上下文.
运行指定上下文中的所有验证.如果参数是
false(默认值为nil),则将上下文设置为:createifnew_record?为true,:update如果不为则为.
:on无论上下文如何,都将运行没有选项的验证.具有某些:on选项的验证仅在指定的上下文中运行.
请查看此文档作为官方示例.
| 归档时间: |
|
| 查看次数: |
1254 次 |
| 最近记录: |