Ruby on rails 当一个对象为“.valid”返回false时,有没有办法找出原因?
当对象为Ruby on rails 当一个对象为“.valid”返回false时,有没有办法找出原因?,ruby-on-rails,validation,Ruby On Rails,Validation,当对象为.valid?返回false时,有没有办法找出原因 CardSignup.new(params[:card_signup]).valid? => false 听起来很棒,但是为什么呢 有点相关,但这里有一个例子。我正在这样做: @card_signup.update_attributes("email"=>"asdfa@asfa.com") => false 但如果我这样做: @card_signup.update_attribute("email", "asdfa
.valid?
返回false时,有没有办法找出原因
CardSignup.new(params[:card_signup]).valid?
=> false
听起来很棒,但是为什么呢
有点相关,但这里有一个例子。我正在这样做:
@card_signup.update_attributes("email"=>"asdfa@asfa.com")
=> false
但如果我这样做:
@card_signup.update_attribute("email", "asdfa@asfa.com")
=> true
当我更新单个属性而不是
更新\u属性
时,为什么会起作用?是的,有一种方法@card\u注册。错误
是的,有一种方法@card\u注册。错误
你应该检查@card\u注册。错误
集合
对于第二个问题,
update\u属性
方法保存记录而不进行验证过程。相反,更新属性
执行验证。您应该检查@card\u注册。错误
集合
对于第二个问题,
update\u属性
方法保存记录而不进行验证过程。相反,update\u attributes
执行验证。单属性更新不经过验证过程
如果构造的ActiveRecord对象无效,请尝试访问errors
方法
例如
单属性更新不经过验证过程 如果构造的ActiveRecord对象无效,请尝试访问
errors
方法
例如
谢谢你,杰夫!这立刻回答了不少问题。有点像更新属性的方法。谢谢Jef!这立刻回答了不少问题。有点像update_attributes方法。
c = CardSignup.new(params[:card_signup])
puts c.errors.to_a.inspect if !c.valid?