我有一个用户模型,如果我添加这个自定义验证,我的空rspec测试失败:
validate :password_complexity
def password_complexity
if !password.blank?
errors.add(:password, "must contain a upper case character") if password.match(/[A-Z]/)
end
end
Rspec:
require 'rails_helper'
RSpec.describe User, type: :model do
end
我运行rspec规范/模型/user_spec.rb
,我得到:
/Users/blank/.rvm/gems/ /Users/blank/.rvm/gems /gems/activerecord-4.2.5/lib/active_record/validations.rb:79: inraise_record_invalid':验证失败:密码必须包含一个大写字符,密码必须包含一个小写字符(ActiveRecord::Record无效)从ruby-2.3.3@myapp/ /gems/activerecord-4.2.5/lib/active_recordruby-2.3.3@myapp/validations.rb:43: in
保存!'from /Users/blank/.rvm/gems /gems/activerecord-4.2.5/lib/active_record/attribute_methods/dirty.rb:29: in保存!'from /Users/blank/.rvm/gems/ruby-2.3.3@myapp /gems/activerecord-4.2.5/lib/active_record/transactions.rb:291: in
block in保存!'从 /Users/blank/.rvm/gems/ /Users/blank/.rvm/gems /gems/activerecord-4.2.5/lib/active_record/transactions.rb:351:在with_transaction_returning_status'中的块'从 /Users/blank/.rvm/gems/ /gems/activerecord-4.2.5/lib/active_record /gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:211:在
事务'从ruby-2.3.3@myapp/ /Users/blank/.rvm/gemsruby-2.3.3@myapp/transactions.rb:220:在事务'从ruby-2.3.3@myapp/ /gems/activerecord-4.2.5/lib/active_recordruby-2.3.3@myapp/transactions.rb:348:在
with_transaction_returning_status'从 /Users/blank/.rvm/gems/ruby-2.3.3@myapp /gems/activerecord-4.2.5/lib/active_record/transactions.rb:291:在保存!'从 /Users/blank/dev/gitserver/myapp/myappweb/app/models/user.rb:74:在
create_from_signup!'/Users/blank/dev/gitserver/myapp/myappweb/app/services/within_new_transaction:在块中创建'从 /Users/blank/.rvm/gems/account_service.rb:11 /gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:在
块中事务'从 /Users/blank/.rvm/gems/seeds.rb:172 /gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:184:在account_service.rb:16'从 /Users/blank/.rvm/gems/ruby-2.3.3@myapp /gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:在
事务'从 /Users/blank/.rvm/gems/ruby-2.3.3@myapp /gems/activerecord-4.2.5/lib/active_record/transactions.rb:220:在事务'从 /Users/blank/dev/gitserver/myapp/myappweb/app/services/ruby-2.3.3@myapp:在
创建'从 /Users/blank/dev/gitserver/myapp/myappweb/db/ruby-2.3.3@myapp:在
为什么会这样?如果我删除该自定义验证,它运行良好。
我的模型是:
class User < ActiveRecord::Base
has_secure_password
belongs_to :account
validates :email, uniqueness: { scope: :account_id }
validates_presence_of :email
validates_presence_of :password, :password_confirmation, on: :create
validates_length_of :password, :minimum => 8, :maximum => 32, :allow_blank => false
#validate :password_complexity
def password_complexity
if !password.blank?
errors.add(:password, "must contain a upper case character") unless password.match(/[A-Z]/)
end
end
end
改变
errors.add(:password, "must contain a upper case character") if password.match(/[A-Z]/)
到
errors.add(:password, "must contain a upper case character") unless password.match(/[A-Z]/)
问题内容: 我有一个带有开始和结束日期范围的Django模型。我想强制执行验证,以便没有两个记录具有重叠的日期范围。最简单的实现方式是什么,这样我就不必重复编写逻辑了? 例如,我不想在Form 和 a 以及 admin表单中重新实现此逻辑, 并且 模型被重写。 据我所知,Django在全球范围内强制执行这些类型的条件并不容易。 Googling并不是很有帮助,因为“模型验证”通常是指验证特定的模型
我正在使用GraphStream库。目前,当我运行我的程序时,它会为我的图形打开新窗口并为我的图形打开单独的窗口。我尝试创建一个并将添加到中,之后我尝试将图形添加到我的中,但它说图形对象不是组件。 这是我的代码: 此程序为和图形打开单独的窗口。我想将我的图形显示在我的或。你知道怎么做吗?我看过这个链接,但它不能很好地解释我。
问题内容: 我有一个带有输入字段和通过添加属性等进行验证设置的表单。但是对于某些领域,我需要做一些额外的验证。我将如何“利用” 控制的验证? 自定义验证可能类似于“如果填写了这3个字段,则此字段是必需的,并且需要以特定方式进行格式化”。 有一个方法,但是看起来不像公共API,所以我宁愿不使用它。创建自定义指令并使用它看起来像另一个选项,但是基本上需要我为每个自定义验证规则创建一个指令,而这是我所不
我们目前正在与社交名媛Laravel的谷歌登录应用程序。我们有一个获得许可号ex的Auth用户。264.我们做了一个函数,它返回一个包含所有二进制数的数组,这个权限号被取消了。 由于每次加载页面时调用此函数可能会有点繁重,因此我们考虑在创建Auth::user()时添加此函数一次。我们曾考虑在模型中添加一个自定义构造函数,但我们无法使其工作。 但是我们不能让它工作,在调用这个函数时没有值。 太长,
它找不到我添加到库中的费率栏库。 下面是我如何将我的库添加到应用程序中的 根级文件 依赖关系{...实现“xxx.xxx.xxxx:xxxx:1.0.6”...}
总结 如何在Django MongoEngine中使用自定义用户模型和自定义身份验证后端(允许电子邮件/密码身份验证)?(这是否需要自定义后端?…即,在使用MongoEngine进行身份验证时使用电子邮件作为用户名。) 是否有直接(完整)的文档在Django中进行身份验证时,将Mongo用作主数据存储时使用自定义用户对象的示例?(博士后有如此清晰和全面的文档…) 细节 MongoEngine似乎只