我的Rails(使用Rails 5)应用程序目前已设置,以便用户使用其手机号码和密码登录/注册。这是使用Devise设置的,但将authentication_keys更改为mobile_number而不是电子邮件。
有一个表单可以添加其他详细信息,包括电子邮件地址。 目前没有电子邮件验证,因为我不希望它是必须输入的。但是,我希望如果用户确实选择输入电子邮件地址,则无法返回并删除它(仅更新它)。 用户模型中还有这段代码,我认为我可以编辑它以使电子邮件字段不为空时需要电子邮件(但它不起作用):
# app/models/user.rb
def email_required?
false unless email.present?
end
答案 0 :(得分:2)
您可以将presence
验证条件添加到以前的电子邮件中:
validates :email, presence: true, if: -> { email_was.present? }
答案 1 :(得分:1)
您可以添加自定义验证,该验证将在更新时运行:
exit
用户在编辑页面上点击class User
validate :non_removable_email, on: :update
private
def non_removable_email
return if email_was.nil?
errors.add(:email, 'Can only be edited') if email.blank?
end
end
后,就会运行验证。如果从未设置Submit
(例如email
),则不会发生任何事情。但如果nil
在那里但变为空 - 将触发错误。