我有两个禁用的文本框。它的价值是零。
仍然update_attribute正在为这些文本框启动验证。
据我所知,update_attribute不应更新传递了nil值的spefic列。
validates_inclusion_of :text_response_time, :in => 0..60, :message => " should be between 0 to 60 minutes."
(rdb:589) params[:test][:text_response_time]
nil
(rdb:589) @test.update_attributes!(params[:test])
ActiveRecord::RecordInvalid Exception: Validation failed: Text response time should be between 0 to 60 minutes.
任何想法!
答案 0 :(得分:1)
更新属性始终验证整个对象,因此您不断获得验证失败的原因。您的选择将是简单地使用update_attribute(忽略验证)或使用条件验证,如railscast
中所述答案 1 :(得分:0)
进一步说明:
@test.update_attribute(:test, params[:test][:text_response_time])
将保存而无需验证。
在您的情况下可能有效的另一种策略是仅对创建(而非更新)进行验证:
validates_inclusion_of :text_response_time, :in => 0..60,
:message => "should be between 0 to 60 minutes.", :on => :create