Rails 6.0 在为一种类型的用户创建和更新时验证密码是否存在,但只为另一种用户更新

Rails 6.0 validate password presence on create and update for one type of user but only update for another

我有一个具有以下属性的 User 模型:

 id: integer
 username: string
 email: string
 password_hash: string
 password_salt: string
 account_type: string
 ...

我的目标是在创建和更新时验证用户的密码。

account_type: 'a' 的用户被创建或更新时,我想 运行 validates :password, :password_confirmation, presence: true.

account_type: 'b' 的用户更新时,我想验证 passwordpassword_confirmation 是否存在,但 NOT 当用户被创建。

如果更多代码或更清晰的解释会有所帮助,请告诉我。提前致谢。

validates :password, :password_confirmation, presence: true, unless: -> { |user| user.account_type == 'b' && user.new_record? }