所以目前validatable
验证了电子邮件和密码的存在。它还可以验证电子邮件格式。但是,我的user
模型需要的不仅仅是电子邮件和密码。我还需要第一个,最后一个和用户名。所以为了让我验证这些属性的存在,我必须使用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的validatable配置,但我不太清楚如何向validatable函数添加其他属性。显然,这不是一件大事,但对于清理用户模型中的代码会很好。感谢您对我的问题的任何回复。
答案 0 :(得分:3)
虽然你可能在运行时monkeypatch Devise::Models::Validatable
,但这将是相当愚蠢的。它将需要5倍的代码并可能会破坏升级。
模块的重点是为模型提供开发即用的基本验证。
您要添加的内容是特定于您的应用程序的验证。因此它属于您的应用程序 - 不要试图将其重新填充到库中。
相反可以通过以下方式清理您的模型:
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