草庐IT

validate_password

全部标签

ruby-on-rails - 如何跳过 has_secure_password 验证

在我的应用中,只有管理员可以创建新的用户记录。用户会通过电子邮件收到一个激活链接,他们可以在其中设置密码。我想使用has_secure_passord方法(railscast):classUser效果很好,但它会自动验证密码摘要的存在...所以当管理员创建记录时,验证失败。我有办法只跳过自动添加的password_digest验证而不跳过我添加的其他验证吗? 最佳答案 从4.X版本的rails开始,has_secure_password采用一个选项:validations。如果将其设置为false,它将不会运行验证。gem3.X版本

ruby-on-rails - 在哪里放置 ActiveModel::Validator?

我试着关注http://api.rubyonrails.org/classes/ActiveModel/Validator.html,但我应该把classMyValidator 最佳答案 Thisguy将它们放在app/validators/下,自从我看到那篇博文后,我也这样做了。 关于ruby-on-rails-在哪里放置ActiveModel::Validator?,我们在StackOverflow上找到一个类似的问题: https://stackover

ruby-on-rails - validates_uniqueness_of 范围为多列

将Validates_uniqueness_of与:scope选项一起使用时,传递这样的列数组是否有效:validates_uniqueness_of:x,:scope=>[:y,:z]因为我希望:x在:y和:z的上下文中是唯一的如果不是那么你怎么能做到这一点?2个验证每个范围一个?谢谢 最佳答案 是的,它是有效的,您的语法正是实现它的方式。查看validationsdocumentationpage了解更多详情。 关于ruby-on-rails-validates_uniqueness

ruby-on-rails - 如何更改 "Devise: password reset instruction email' 的主题”

我只是无法更改“密码重置说明”电子邮件的主题。我更改了Mailer中的notifer.rb以覆盖Devise默认电子邮件主题。但它不起作用。在我的应用程序中,Devise.yml文件中有默认的电子邮件主题。但我想通过从数据库中提取数据来动态更改它。 最佳答案 可以在intilizer目录下的devise.en.yml文件中修改并为任何邮件设置您自己的主题mailer:confirmation_instructions:subject:'Confirmationinstructions'reset_password_instructi

ruby - 如何将 `should validate_presence_of` 与自定义错误消息一起使用?

我正在使用Rspec测试我的ActiveRecord模型。我刚刚向我的验证之一添加了自定义错误消息,如下所示:validates:accepted_terms_at,:presence=>{:message=>'YoumustaccepttheTermsandConditionstousethissite.'}现在下面的测试失败了:it{shouldvalidate_presence_of(:accepted_terms_at)}...错误Expectederrorstoinclude"can'tbeblank"whenaccepted_terms_atissettonil。所以测试失

ruby-on-rails - Rails : Validate only on create, 或在字段不为空时更新

当字段不为空时,如何限制Rails验证仅在创建时检查或检查?我正在为我正在使用的应用程序创建一个用户设置页面,问题是,当使用表单提供的参数进行更新时,只有在密码和密码确认都存在时才会保存设置。我希望这些密码字段无论如何都在创建时进行验证,但仅在提供时进行更新。 最佳答案 如果你想允许空值使用:allow_blank与验证。classTopic如果您只想在创建时验证,请使用on与验证。classTopic涵盖您的情况:classTopicvalidates:email,presence:true,if::should_validate

ruby-on-rails - 尝试为 ror 应用程序设置 postgres,出现错误 - fe_sendauth : no password supplied

获得:Anerrorhasoccurred:Errorconnectingtotheserver:fe_sendauth:nopasswordsupplieddatabase.yml中的设置与其他机器上的应用设置相同。我如何设置才能不需要硬编码密码?我可以使用PgAdmin-III查看数据库。我宁愿不要在database.yml中设置密码,因为使用此应用程序的其他机器没有/不需要密码,所以这似乎与我的Pg安装有关。 最佳答案 您需要更改您的pg_hba.conf。这是我的一个例子:pg_hba.conf:TYPEDATABASEUS

ruby - "Could not find a valid gem in any repository"(rubygame 等)

一段时间以来我一直在尝试安装这个“rubygame”gem,但是每当我使用命令时geminstallrubygame会报错:ERROR:Couldnotfindavalidgem'rubygame'(>=0)inanyrepositoryERROR:Whileexecutinggem...(Gem::RemoteFetcher::FetchError)Errno::ETIMEDOUT:Connectiontimedout-connect(2)(http://rubygems.org/latest_specs.4.8.gz)我也尝试过其他gems但结果相似:ERROR:Couldnotf

ruby-on-rails - 我如何在 rails 中销毁 'validate'

在销毁restful资源时,我想在允许销毁操作继续之前保证一些事情?基本上,如果我注意到这样做会使数据库处于无效状态,我希望能够停止销毁操作?销毁操作没有验证回调,那么如何“验证”销毁操作是否应该被接受? 最佳答案 您可以引发异常,然后捕获该异常。Rails将删除包装在一个事务中,这有助于解决问题。例如:classBooking或者,您可以使用before_destroy回调。此回调通常用于销毁依赖记录,但您可以抛出异常或添加错误。defbefore_destroyreturntrueifbooking_payments.count

ruby-on-rails - rails : Validating min and max length of a string but allowing it to be blank

我有一个要验证的字段。我希望该字段能够留空,但如果用户正在输入数据,我希望它采用某种格式。目前我在模型中使用以下验证,但这不允许用户将其留空:validates_length_of:foo,:maximum=>5validates_length_of:foo,:minimum=>5如何编写此代码以实现我的目标? 最佳答案 你也可以使用这种格式:validates:foo,length:{minimum:5,maximum:5},allow_blank:true或者因为您的最小值和最大值相同,以下也将起作用:validates:foo