当一个对象为`.valid?`返回false时,有没有办法找出原因?

Tri*_*rip 0 validation ruby-on-rails

当一个对象返回false时.valid?,有没有办法找出原因?

CardSignup.new(params[:card_signup]).valid?
=> false
Run Code Online (Sandbox Code Playgroud)

听起来很棒Rails ......但为什么呢?

有点相关,但这是一个例子.我这样做:

@card_signup.update_attributes("email"=>"asdfa@asfa.com")
=> false
Run Code Online (Sandbox Code Playgroud)

但如果我这样做:

@card_signup.update_attribute("email", "asdfa@asfa.com")
=> true
Run Code Online (Sandbox Code Playgroud)

当我更新单个属性而不是update_attributes?时,为什么会有效?

Jef*_*Jef 5

你应该检查一下这个@card_signup.errors集合.

对于第二个问题,该update_attribute方法保存记录而不进行验证过程.相反,update_attributes执行验证.