Object.update_attribute(:only_one_field, "Some Value")Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")兩者都將更新對象,而無需顯式通知AR更新。Rails API說:用于update_attribute更新單個屬性并保存記錄,而無需執行正常的驗證過程。這對于現有記錄上的布爾標志特別有用。混入驗證模塊時,Base中的常規update_attribute方法將替換為該方法,默認情況下為該方法。用于update_attributes從傳入的哈希中更新所有屬性并保存記錄。如果對象無效,則保存將失敗并返回false。因此,如果我不想驗證對象,則應使用update_attribute。如果我在before_save上進行了更新,將會導致stackoverflow嗎?我的問題是update_attribute是否也繞過了之前的保存或只是驗證。另外,將哈希傳遞給update_attributes的正確語法是什么...在頂部查看我的示例。
3 回答

叮當貓咪
TA貢獻1776條經驗 獲得超12個贊
update_attribute
此方法無需調用基于模型的驗證即可更新對象的單個屬性。
obj = Model.find_by_id(params[:id])
obj.update_attribute :language, “java”
update_attributes
該方法更新單個對象的多個屬性,并通過基于模型的驗證。
attributes = {:name => “BalaChandar”, :age => 23}
obj = Model.find_by_id(params[:id])
obj.update_attributes(attributes)
希望這個答案能弄清楚什么時候使用主動記錄的方法。

繁華開滿天機
TA貢獻1816條經驗 獲得超4個贊
同樣值得注意的是,使用時update_attribute,要更新的所需屬性不需要白名單來attr_accessible進行更新,這與update_attributes僅分配attr_accessible指定屬性的批量分配方法相反。
- 3 回答
- 0 關注
- 881 瀏覽
添加回答
舉報
0/150
提交
取消