是否有一種類似於update_attributes
的內置方法會忽略作爲參數傳入的散列中的無效密鑰?如果沒有,處理髮送可能包含或不包含有效密鑰的散列的情況的最佳方式是什麼?ActiveRecord update_attributes忽略無效密鑰
3
A
回答
1
我不知道任何能夠在Rails中完成這項功能的東西。我也沒有意識到一個簡單的方法來確定模型的「定義的屬性」是什麼 - 因爲模型可能會覆蓋setter,虛擬屬性等。每當我需要這個功能時,我只是明確定義可接受的符號類中的一個列表,像這樣:
class Foo < ActiveRecord::Base
def defined_attributes
[ :a, :b, :c ]
end
end
...然後,後來在某種過濾步驟的使用:
attrs = { :a => 1, :z => 0 }
foo.update_attributes(attrs.slice(*foo.defined_attributes))
1
一個選項是運行obj.valid?並在調用update_attributes之前刪除無效的鍵(來自obj.errors數組的那些鍵)。
def update_valid_attributes(o)
o.errors.messages.each do {|k,msg| o.delete k} if !o.valid?
o.update_attributes
end
,如果你想在你的所有堅持實體也可以將此方法添加到的ActiveRecord :: Base的。
相關問題
- 1. 有沒有辦法通過get_multi忽略無效密鑰?
- 2. db.cloneCollection忽略重複密鑰
- 3. ActiveRecord無密鑰關聯
- 4. jwt密鑰無效
- 5. ActiveRecord忽略配置
- 6. C GPGMe忽略用戶密鑰環
- 7. ThisBuild忽略插件設置密鑰
- 8. Rails datetime_select忽略無效值
- 9. 忽略無效SSL證書
- 10. 忽略無效條目
- 11. ActiveRecord緩存和update_attributes
- 12. API密鑰無效Yandex Translate
- 13. JSCH - 私有密鑰無效
- 14. cPickle.UnpicklingError:無效加載密鑰
- 15. Google API密鑰無效
- 16. 密鑰'attachdbfilename'的值無效
- 17. 無效的密鑰哈希
- 18. SimpleSchema無效密鑰「_id required」
- 19. Mandrill無效密鑰錯誤
- 20. 公共ssh密鑰無效
- 21. 無效密鑰異常
- 22. Firebase API密鑰無效
- 23. 檢查無效的密鑰
- 24. iOS Payumoney SDK密鑰無效
- 25. 密鑰庫無效問題?
- 26. UnpicklingError無效加載密鑰,'{'
- 27. attachdbfilename的密鑰無效
- 28. Rails3 activerecord update_attributes無法保存foreign_key
- 29. ActiveRecord migration:unique => true被忽略?
- 30. Ruby activerecord似乎忽略set_table_name
通過「有效的鑰匙」,你的意思「一個表示模型現有屬性的符號(不會引發未定義的方法)」或「a key =>值對」,它將通過驗證「? 「 – pje
」表示模型現有屬性的符號(不會引發未定義的方法)「 – 0xSina
如果符合您的問題@ 0xSina – MrYoshiji