Exi*_*iRe 21 ruby validation ruby-on-rails ruby-on-rails-3
我有一个非常新手的问题.在更新之前,如何检查模型对象是否对新参数有效?
我希望改造:
def update
@obj = SomeModel.find( params[:id] )
if @obj.update_attributes( params[:obj] )
# That have been updated
else
# Ups, errors!
end
end
Run Code Online (Sandbox Code Playgroud)
对于这样的事情:
def update
@obj = SomeModel.find( params[:id] )
if @obj.valid_with_new_params( params[:obj] )
@obj.update_attributes( params[:obj] )
else
# Ups, errors!
end
end
Run Code Online (Sandbox Code Playgroud)
Jus*_*tin 40
要更新属性而不保存它们,您可以使用
@obj.assign_attributes( params[:obj] )
Run Code Online (Sandbox Code Playgroud)
然后检查对象是否有效,你可以打电话
@obj.valid?
Run Code Online (Sandbox Code Playgroud)
如果对象是不是有效的,你可以看到错误(只打完电话后.valid?拨打)
@obj.errors
Run Code Online (Sandbox Code Playgroud)
如果对象是有效的,你可以通过调用保存
@obj.save
Run Code Online (Sandbox Code Playgroud)
但是,所有这一切通常都没有必要.如果对象无效,则ActiveRecord不会将对象保存到数据库,因此在您离开控制器操作时会忘记所有属性更改.
此外,由于无效记录将不会保存到数据库,因此您始终可以再次调用Object.find()以获取原始对象.