为Devise validatable

时间:2016-02-13 18:23:24

标签: ruby-on-rails ruby validation devise

所以目前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函数添加其他属性。显然,这不是一件大事,但对于清理用户模型中的代码会很好。感谢您对我的问题的任何回复。

1 个答案:

答案 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