ActiveRecord::Base是如何生成attributes_methods?關(guān)于這個問題相信看過《Ruby元編程》一書的伙伴能了解到從,rails1到3的介紹。但是,...
ActiveRecord::Base是如何生成attributes_methods?關(guān)于這個問題相信看過《Ruby元編程》一書的伙伴能了解到從,rails1到3的介紹。但是,...
active record 在create/update的時候會默認(rèn)更新created_at/updated_at字段為當(dāng)前字段,可以通過config.active_reco...
負(fù)責(zé)ActiveRecord::Base的association部分的實(shí)現(xiàn),也就是has_many, has_one等等。先看到我們平時用的has_many方法: 通過bui...
這個模塊想必大家都會很熟悉,在rails的基礎(chǔ)教程里負(fù)責(zé)password的加密和驗(yàn)證,主要就是給ActiveRecord::Base添加了password=、password...
ActiveRecord::AutosaveAssociation 這個模塊主要是負(fù)責(zé)自動保存associated records當(dāng),它的parent保存的時候。除此之外,也...
根據(jù)ActiveRecord::Base里的繼承鏈向上閱讀 ActiveRecord::Suppressor 先是Suppressor,先看功能部分: 被suppress(抑...
ActiveRecord::NestedAttributes nest attributes的實(shí)現(xiàn)部分,也就是嵌套數(shù)據(jù)部分: 主要部分為module ClassMethods...
ActiveRecord::Transaction 實(shí)現(xiàn)transaction部分的功能。 暴露給我們的方法主要是在ClassMethods里: transaction: 在...
ActiveRecord::TouchLater 用了touch_later,來touch的話,會將touch延遲到別的語句執(zhí)行完之后在commit執(zhí)行。
ActiveRecord::NoTouching 讓你有選擇性的可以禁用掉touch,在no_touching的block內(nèi)??梢允褂肁ctiveBase::Record.n...
首先,我們理解下Reflection的概念:反射:在計(jì)算機(jī)科學(xué)里,是指程序在運(yùn)行時,可以訪問、檢測和修改它本身狀態(tài)或行為的一種能力。內(nèi)省:內(nèi)?。ɑ蚍Q“自省”)機(jī)制僅指程序在運(yùn)...
用于在類里保存當(dāng)前線程的變量信息,也就是說一個類extend了PerThreadRegistry,那么這個類的變量將只在這個線程里共享。
這個方法已經(jīng)沒有了,在看rails5.1+的源碼里,但是還是記錄一下這些方法演變的過程。 alias_method_chain產(chǎn)生的原因 因?yàn)榻o原方法增加新功能的想法在Rai...
自動加載機(jī)制 Active Record是Rails的ORM功能實(shí)現(xiàn)。上面代碼使用了ActiveSupport::Autoload模塊,該模塊定義了autoload方法。代碼...
require load autoload require 1.kernel method,可以加載ruby文件,也可以加載外部的庫。2.相比load ,針對同一個文件,它只...
railtie的configuration eager_load_namespaces: 需要提前加載的命名空間watchable_files: 需要被監(jiān)聽到改變的文件wat...
由于平時寫類的代碼比較多,這里再復(fù)習(xí)一下模塊的知識點(diǎn): 模塊不能擁有實(shí)例 模塊不能被繼承 模塊的主要使用方式: 利用 Mix-in 擴(kuò)展功能 提供命名空間 模塊的方法:和類一...
set_load_path:添加config里的一些路徑到$LOAD_PATH并且uniq 設(shè)置好自動加載的路徑和自動加載一次的路徑,并且freeze防止被錯誤修改. add...