因此,目前 validatable
验证电子邮件和密码是否存在。它还可以验证电子邮件格式。但是,我的用户
模型需要的不仅仅是电子邮件和密码。我还需要名字、姓氏和用户名。因此,为了验证这些属性是否存在,我必须使用 Rails 验证,如下所示:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :first_name, presence: true
validates :last_name, presence: true
validates :user_name, presence: true
end
我想知道是否有办法将名字、姓氏和用户名添加到可验证操作中。我已经检查了 devise.rb 文件并找到了 password_length 和 email_regexp 的可验证配置,但不太知道如何向可验证函数添加其他属性。显然这不是什么大问题,但对于清理我的用户模型中的代码来说会很好。感谢您对我的问题的任何答复。
最佳答案
虽然您可以在运行时对 Devise::Models::Validatable
进行 Monkeypatch,但这将是相当愚蠢的。它将需要 5 倍以上的代码,并且可能会破坏升级。
该模块的重点是为模型提供 Devise 开箱即用所需的基本验证。
您要添加的是特定于您的应用程序的验证。因此它属于您的应用程序 - 不要尝试将其塞回库中。
相反,可以通过以下方式清理您的模型:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates_presence_of :first_name, :last_name, :user_name
end
关于ruby-on-rails - 为 Devise 可验证添加额外的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35383633/