如何将 Devise 设置为要求填充电子邮件或用户名之一以进行保存



我遵循了这个:https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address

哪个有效。 所以现在我可以使用 :username 和 :p assword 或 :email 和 :p assword 登录。

但是,当我在控制台中创建帐户时,如果我将电子邮件留空,则会收到验证错误。 显然,创建用户仍然需要电子邮件。

我希望能够仅使用 :用户名和 :p assword,或 :email 和 :p assword 创建一个用户。

请尝试将以下内容添加到您的用户模型中:

def email_required?
  false
end

您可能还需要创建一个迁移,以允许用户表上的电子邮件列为空(如果它不是允许空列):

change_column :users, :email, :string, :null => true 

编辑

您剩下要做的就是确保至少存在用户名或电子邮件。您可以通过设置以下验证语句来执行此操作:

validate :username_or_email_is_present
def username_or_email_is_present
  if self.username.blank && self.email.blank?
    errors.add(:base, "Email or Username must be set")
  end
end

最新更新