ruby-on-rails - Rails 4 和 Devise : Allow email blank on certain conditions

标签 ruby-on-rails validation email devise

我目前正在开发一个系统,其中仅当用户不是学生时才需要电子邮件,而如果用户是学生则需要用户名。 这就是我在模型中所做的:

class User < ActiveRecord::Base
  validates :email, presence: true, unless: :student?
  validates :username, presence: true, if: :student?
end

这在用户名属性上效果很好,但对于电子邮件,我仍然收到电子邮件不能为空错误。我猜 Devise 有自己的电子邮件验证规则。

我怎样才能做到这一点,我的意思是覆盖设计验证电子邮件的存在规则?

谢谢

最佳答案

Devise 有一个 email_required? 方法,可以用一些自定义逻辑覆盖。

class User < ActiveRecord::Base
  validates :username, presence: true, if: :student?

  protected

  def email_required?
    true unless student?
  end
end

关于ruby-on-rails - Rails 4 和 Devise : Allow email blank on certain conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649311/

相关文章:

ruby-on-rails - Ruby on Rails 中的 form_for 错误消息

javascript - 在 Rails 中,如何获取具有动态创建的 ID 的元素?

file - flutter 发送邮件附件

html - 如何为 gmail 格式化电子邮件?

sql - ActiveRecord 查询以查找给定键的 JSON 值数组

ruby-on-rails - 正确的 rails 型号是什么?建议使用冗余?

Dropwizard 中的 Java 复杂验证?

javascript - Joi 中的 array.items() 内的 object.pattern() 无法正常工作

asp.net-mvc - 在mvc中的 View 中添加特定的错误消息

asp.net - 使用 MVC5 ASP.NET 和rackspace 发送电子邮件