ruby – 验证ActiveRecord时,我有效吗? => false但在errors.count中没有错误.怎么会?

ruby – 验证ActiveRecord时,我有效吗? => false但在errors.count中没有错误.怎么会?,第1张

概述在rspec中创建ActiveRecord时,我使用fixture来获取有效记录. 但是当在测试中使用fxitures时,它们似乎无法通过验证. 在以下示例中,员工似乎完全有效,但规范中的关联验证表明它们无效. class Employee < ActiveRecord::Base validates_presence_of :emailendclass User < Activ 在rspec中创建ActiveRecord时,我使用fixture来获取有效记录.
但是当在测试中使用fxitures时,它们似乎无法通过验证.
在以下示例中,员工似乎完全有效,但规范中的关联验证表明它们无效.

class Employee < ActiveRecord::Base  valIDates_presence_of     :emailendclass User < ActiveRecord::Base  valIDates_associated      :employeeend#Command line deBUGger in 'deBUGger' (below) returns:Employee.find(745185059).errors.count         # => 0Employee.find(745185059).errors.full_messages # => []Employee.find(745185059).valID?               # => true

例如:

describe SessionsController do  fixtures :users,:employees  describe "Logging in by cookie" do    def set_remember_token token,time      @user[:remember_token]            = token;       @user[:remember_token_expires_at] = time      deBUGger      @user.save! # THIS SAYS THE EMPLOYEE IS INVALID,but why,if the fixtures are good?    end        it 'logs in with cookie' do      stub!(:cookies).and_return({ :auth_token => 'hello!' })      logged_in?.should be_true    end  endend

为什么我得到验证失败的任何想法?
(当然,我删除了很多中间代码,错误可能完全在其他地方)

解决方法 您可以在.save(没有爆炸!)之后调试@user,它应该添加错误,它可能是由模型回调引起的,也可能是您的valIDate方法所做的事情.在你的测试中,只需:

@user.saveputs @user.errors.inspect # or your command line deBUGger

并在运行测试时读取输出.

总结

以上是内存溢出为你收集整理的ruby – 验证ActiveRecord时,我有效吗? => false但在errors.count中没有错误.怎么会?全部内容,希望文章能够帮你解决ruby – 验证ActiveRecord时,我有效吗? => false但在errors.count中没有错误.怎么会?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1288126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存