我正在運行rails 3.0。我有一個對象,我想更改布爾字段但不想更改updated_at時間戳。我們不會很快升級rails,所以update_column是不可能的。我寧願不進行模型級別的更改來支持此操作(如在此帖子中:http://blog.bigbinary.com/2009/01/21/override-automatic-timestamp-in-activerecord-rails.html),因爲此類型的許多對象可能同時具有對它們調用的方法。更新屬性而不更改updated_at字段
3
A
回答
7
你可以使用.update_all:
User.where(:id => @user.id).update_all(:your_bool_field => true)
+0
這工作,謝謝! – 2012-08-01 19:50:18
+4
請注意,這不會觸發回調 – mahemoff 2013-01-21 04:33:55
6
更新前可以將record_timestamps屬性設置爲false。
User.record_timestamps=false
User.first.update_attributes(:field1 => "Test")
User.record_timestamps=true
更多: http://blog.bigbinary.com/2009/01/21/override-automatic-timestamp-in-activerecord-rails.html
3
Rails的5允許更新記錄而不更新時間戳。
在Rails 4.x中,當我們保存一個ActiveRecord對象,然後Rails的自動更新字段ActiveRecord::Base#save
updated_at
或updated_on
加觸摸選項。
在Rails 5中,通過傳遞touch: false
作爲保存選項,我們可以在不更新時間戳的情況下更新對象。 touch
的默認選項是true
。
>> user = User.new(name: 'David', email: '[email protected]')
>> user.save
INSERT INTO "users" ("name", "created_at", "updated_at", "email") VALUES (?, ?, ?, ?)
[["name", "John"], ["created_at", 2016-05-12 05:10:22 UTC], ["updated_at", 2016-05-12 05:10:22 UTC], ["email", "[email protected]"]]
=> true
>> user.updated_at
=> Thu, 12 May 2016 05:10:22 UTC +00:00
>> user.name = "John"
>> user.save(touch: false)
UPDATE "users" SET "name" = ? WHERE "users"."id" = ? [["name", "John"], ["id", 12]]
=> true
>> user.updated_at
=> Thu, 12 May 2016 05:10:22 UTC +00:00
相關問題
- 1. 如果正在更改某個屬性,請不要更改updated_at屬性
- 2. 更改src屬性不更新圖像
- 3. 屬性不會更新輸入更改
- 4. 更改字段標識符而不更改字段名稱
- 5. 更新物品實體而不更改索引屬性
- 6. 如何在不觸摸updated_at屬性的情況下更新單個屬性?
- 7. joomla表單 - 更改屬性和字段
- 8. 動態更改字段的屬性
- 9. GAE更改字段名稱/屬性
- 10. 更改表中的字段屬性
- 11. 實體中的更新字段(屬性)
- 12. EntityState.Modified而不更新導航屬性
- 13. 屬性不更新
- 14. 屬性不更新
- 15. 嵌套屬性強參數只更新外鍵,created_at和updated_at?
- 16. UISegmentedControl禁用段而不更改字體
- 17. 更改或更新的屬性值
- 18. 更改Primefaces中的更新屬性dynamicaly
- 19. textblock在屬性更改時未更新
- 20. 在更改DatePicker後更新NSManagedObject屬性
- 21. WPF/C#更新屬性更改到ListBox
- 22. 屬性更改時更新標誌
- 23. 如何在屬性值更改時更新從屬屬性?
- 24. 更改名稱和的updated_at
- 25. 更新計算字段而不驗證
- 26. 更改UINavigationBar字體屬性?
- 27. 更改屬性值而不創建新的輸出文檔?
- 28. 更新屬性不更新視圖
- 29. 如何更新Sequel數據集的updated_at字段?
- 30. 自動更新父記錄updated_at字段(Elixir-Ecto)
你總是可以運行一些原始的SQL,不是嗎? – 2012-08-01 19:20:41
[有沒有辦法避免自動更新Rails時間戳字段?](http://stackoverflow.com/questions/861448/is-there-a-way-to-avoid-automatically-updating-rails-timestamp -fields) – 2016-05-12 18:45:34