在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. 什麼時候使用obj!.attr和obj?.attr?
- 7. 爲什麼使用jQuery的.attr(X,Y)
- 8. 什麼時候我們不應該使用[weak self]和[unowned self]?
- 9. 爲什麼用'$'代替'。'?
- 10. 爲什麼在我的Rails模型中賦值時需要使用self?
- 11. 什麼時候使用ListView代替RecyclerView
- 12. jQuery的替代ATTR scource使用var
- 13. Makefile使用C++代替g ++ - 爲什麼?
- 14. Rails中關聯的write_attribute等效項是什麼?
- 15. 使用Rails gem代替vendor/rails有什麼好處?
- 16. 爲什麼「[self class] == [super class]」?
- 17. 什麼是ActiveRecord Rails關係?
- 18. 什麼是SELF JOIN,什麼時候使用它?
- 19. 爲什麼ActiveRecord不是一個模塊?
- 20. 爲什麼使用Rails public_method?
- 21. 爲什麼userdata設置爲self?
- 22. 爲什麼我不能引用attr`android:popupEnterTransition`?
- 23. 什麼時候應該在C庫的Rust綁定中使用`&mut self`與`&self`?
- 24. 爲什麼要用芹菜代替RabbitMQ?
- 25. 爲什麼用testFixture代替TestClass?
- 26. 爲什麼用「&」代替逗號?
- 27. XMLHttpRequest已棄用。代替使用什麼?
- 28. 爲什麼我應該使用Reify代替clojure中的代理?
- 29. Rails/postgresQL ActiveRecord - 如何和爲什麼改變主鍵?
- 30. (Rails,ActiveRecord)如何在仍檢索字段名稱的同時使用ActiveRecord計算?