在RoR ActiveRecord類中使用self[:attribute]=value
而不是write_attribute(:attribute => value)
有什麼優點和缺點。這只是一個風格問題嗎?或者有更深層次的理由來選擇一個優於另一個?Rails 4.2.5.1 ActiveRecord:何時/爲什麼使用self [:attr] =替代write_attribute()
0
A
回答
1
如果你看一下在GitHub上源,你可以看到,在內部它使用了私有方法write_attribute_with_type_cast
:
這使您對自己剛剛打電話self[:attribute]=value
中,如果你是一個優勢設置爲id
,或者您認爲應該是id
,則該方法將處理查找模型主鍵的正確屬性名稱。
最後,通過write_from_user
,軌道實際上是調用與事物有不同的名稱self[:attribute] = value
你,雖然:
超越:id
自動校正:custom_primary_key
如果模型沒有使用標準id
列作爲其主鍵,但使用write_attribute
而不是self[:attribute]=value
的功能優勢。
相關問題
- 1. 爲什麼使用「self」訪問ActiveRecord/Rails模型屬性?
- 2. 什麼是Rails 3替代ActiveRecord :: Errors?
- 3. Rails ActiveRecord替代ModelName.all
- 4. 使用DataMapper代替ActiveRecord
- 5. Rails 3中ActiveRecord :: RecordNotFound的替代語法是什麼
- 6. 什麼時候在Ruby on Rails ActiveRecord中傳入實例來代替id工作?
- 7. ActiveRecord:替代find_in_batches?
- 8. 什麼時候rails使用點來代替反斜槓?
- 9. Rails中關聯的write_attribute等效項是什麼?
- 10. 我從rails rails(4.1.8)升級到rails 4.2.5.1
- 11. 爲什麼用'$'代替'。'?
- 12. 什麼時候使用obj!.attr和obj?.attr?
- 13. 爲什麼使用jQuery的.attr(X,Y)
- 14. 什麼時候我們不應該使用[weak self]和[unowned self]?
- 15. 爲什麼在我的Rails模型中賦值時需要使用self?
- 16. 什麼時候使用gethrvtime()代替gethrtime()
- 17. 什麼時候使用ListView代替RecyclerView
- 18. Makefile使用C++代替g ++ - 爲什麼?
- 19. 爲什麼不推薦使用window.showModalDialog?代替使用什麼?
- 20. rails activerecord有什麼問題?
- 21. 使用Rails gem代替vendor/rails有什麼好處?
- 22. 爲什麼「[self class] == [super class]」?
- 23. 什麼是ActiveRecord Rails關係?
- 24. 使用__init __(self)代替setup(self)用於鼻子測試課有什麼缺點嗎?
- 25. 爲什麼Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?
- 26. 什麼是SELF JOIN,什麼時候使用它?
- 27. 爲什麼ActiveRecord回調需要使用self關鍵字作爲前綴的實例變量或實例方法?
- 28. 在Coffeescript/Morris.JS中使用Ruby Hash代替Rails ActiveRecord
- 29. 爲什麼不用attr設置類?
- 30. 爲什麼ActiveRecord不是一個模塊?