Ruby on rails 为Desive Validable添加额外验证

Ruby on rails 为Desive Validable添加额外验证,ruby-on-rails,ruby,validation,devise,Ruby On Rails,Ruby,Validation,Devise,因此,当前validable验证电子邮件和密码的存在。它还可以验证电子邮件格式。然而,我的用户型号需要的不仅仅是电子邮件和密码。我还需要一个名字,姓氏和用户名。因此,为了验证这些属性的存在,我必须使用rails验证,如图所示: class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable a

因此,当前
validable
验证电子邮件和密码的存在。它还可以验证电子邮件格式。然而,我的
用户
型号需要的不仅仅是电子邮件和密码。我还需要一个名字,姓氏和用户名。因此,为了验证这些属性的存在,我必须使用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
class用户

我想知道是否有办法将first、last和user name添加到可验证的操作中。我检查了
designe.rb
文件,找到了密码长度和电子邮件regexp的可验证配置,但不知道如何向可验证函数添加其他属性。显然这不是什么大不了的事,但对于清理我用户模型中的代码来说会很好。谢谢你对我的问题的回复

虽然您可以在运行时设计::Models::validable
,但这相当愚蠢。这将需要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
class用户
虽然您可以在运行时设计::Models::validable,但这是相当愚蠢的。这将需要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
class用户
这是一个很有帮助和深刻见解的答案。感谢您花时间@max提供了一些见解。这是一个有帮助且有见解的回答。感谢您花时间@max提供一些见解。