亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Rails:update_attribute與update_attributes

Rails:update_attribute與update_attributes

qq_遁去的一_1 2019-12-09 09:36:26
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)

希望這個答案能弄清楚什么時候使用主動記錄的方法。


查看完整回答
反對 回復 2019-12-09
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

同樣值得注意的是,使用時update_attribute,要更新的所需屬性不需要白名單來attr_accessible進行更新,這與update_attributes僅分配attr_accessible指定屬性的批量分配方法相反。


查看完整回答
反對 回復 2019-12-09
  • 3 回答
  • 0 關注
  • 881 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號