Tas*_*ass 5 ruby validation conditional ruby-on-rails
我有一个允许更新用户记录的表单.它包含以下字段:password和:password_confirmation但如果加密密码已存储在数据库中,我不希望在它们上运行验证.
视图文件中的字段:
<%= f.password_field :password %>
<%= f.password_field :password_confirmation, :label => 'Confirm Password' %>
Run Code Online (Sandbox Code Playgroud)
在搜索互联网时,我发现了一些代码,我假设它是以前版本的Ruby/Rails.(我将把它放在我的用户模型中.)
validates_presence_of :password, :on => create
Run Code Online (Sandbox Code Playgroud)
由于我的用户模型中的密码验证语法不同(下面),我对我需要的语法感到困惑.
validates :password, :presence => true, :confirmation => true
Run Code Online (Sandbox Code Playgroud)
我搜索了其他帖子,肯定可以使用一些方向.
- 免责声明 - 我确实看到有关于条件验证的屏幕投射,但我现在无法观看.
谢谢,所有.
编辑 - 插入以下代码,它允许用户记录更新,而不会抱怨缺少密码字段.
validates :password, :presence => true, :confirmation => true, :on => :create
Run Code Online (Sandbox Code Playgroud)
我建议你做以下事情:
validates :password,
:presence => true,
:confirmation => true,
:if => lambda{ new_record? || !password.nil? }
Run Code Online (Sandbox Code Playgroud)
这基本上表示需要在创建时使用password_confirmation确认密码,并且当密码不为零时也需要确认密码 - 例如,当用户更新密码时.
validates :password, :presence => true, :confirmation => true, :on => :create
Run Code Online (Sandbox Code Playgroud)
阅读更多关于Railsguides的信息:http://edgeguides.rubyonrails.org/active_record_validations_callbacks.html#on
| 归档时间: |
|
| 查看次数: |
3097 次 |
| 最近记录: |