ruby-on-rails - 为 Devise 可验证添加额外的验证

标签 ruby-on-rails ruby validation devise

因此,目前 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/

相关文章:

c - 测试 token 结束

ruby - 通过脚本运行ruby文件

ruby-on-rails - 一个有很多 child 的 ActiveRecord 对象是否知道一个 child 何时属于它?

javascript - 如何验证具有多个选项卡的表单?

ruby-on-rails - 是否存在将数字转换为 comp-3/压缩十进制格式的现有 gem 或脚本?

ruby-on-rails - 在 Rails 中使用 ActiveModel::Serializer - JSON 数据在 json 和索引响应之间不同

JavaScript 字数统计表单验证

ruby-on-rails - Rails-在before_save中获取旧值

javascript - Rails 6/Webpack 无法编译生产中从 js.erb 引用的图像? (但正在开发中)

ruby-on-rails - VMPlayer 中 Ubuntu 64 上的 Ruby on Rails 3 教程