可能重複:
Rails update_attributes without save?如何實現一個無的update_attributes實際保存更改
從根本上說,我想做一個ActiveRecord 「update_attributes方法」,而留下的ActiveRecord變更尚待處理。有沒有辦法做到這一點?如果你想知道爲什麼我想要這個,請繼續閱讀。
我有一個由三部分組成的表單:一個靜態部分(相互獨立的文本字段),一組選擇(隨着條目的填充而增長)和一個顯示選擇對組的選擇的影響的部分依賴對象。更改選項需要往返服務器以確定效果,其中一些選擇會影響未來選擇的選擇。這些選擇被建模爲來自基本模型的has_many關聯。例如。 (請注意,[]項指定HTML的選擇)
Include [section]
Exclude [subsection]
Exclude [subsection]
Include [section]
Exclude [subsection]
...
我已設置的形式向上作爲典型的嵌套屬性的形式。當選擇發生變化時,我用AJAX回發這些字段,以便獲取典型的參數散列(例如,params [:basemodel] [associated_models_attributes] [0] [:field_name])。我想把它寫入一個未保存的ActiveRecord中,以便我已經用於生成部分原始頁面的部分可以用來生成JS響應(我爲此使用了一個js.erb文件)。使用Basemodel.new(PARAMS [:basemodel])給出
"ActiveRecord::RecordNotFound (Couldn't find AssociatedModel with ID=1 for Basemodel with ID=)
這是發生(我認爲),因爲從現有的相關記錄的ID(這在目前的記錄非空白標識)不出錯與來自「新」呼叫的空白ID匹配。
我可以做一些真正的kludgy並創建一些看起來像ActiveRecord的東西(至少足以滿足我的偏好)但我必須認爲這是一個常見問題,以至於有一個很好的解決方案。
爲3.1+,使用'assign_attributes' http://apidock.com/rails/ActiveRecord/Base/assign_attributes – elado
可以使用update_column(名稱,值)更新對象的單一屬性,而無需調用save 。 1.驗證被跳過。 2.回調被跳過。 3.如果該列可用,updated_at/updated_on列不會更新。 http://apidock.com/rails/ActiveRecord/Persistence/update_column – Antoine