我有一個非常新手的問題。如何在更新之前檢查模型的對象是否與新參數一致?Rails 3 - 在更新之前檢查對象是否有效參數
我想變換:
def update
@obj = SomeModel.find(params[:id])
if @obj.update_attributes(params[:obj])
# That have been updated
else
# Ups, errors!
end
end
爲了這樣的事情:
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
@ obj.attributes(params [:obj])後,調用@ obj.save。 –
本文寫作時,此回答中顯示的'attributes()'方法已被棄用。而是使用'assign_attributes(new_attributes)'或別名'attributes =(new_attributes)'。因此,這個答案的第一行應該是'@ obj.assign_attributes(params [:obj])''。請參閱[ActiveRecord :: AttributeAssignment](http://api.rubyonrails.org/classes/ActiveRecord/AttributeAssignment.html) – user664833
Re:'assign_attributes(new_attributes)' - 請注意*唯一的屬性集是通過鍵命名的參數哈希*。所以如果你有一個現有的對象,你可以添加/合併屬性的一個子集。 – user664833