Re: [問題] after_initialize and after_find
※ 引述《tonytonyjan (南洋大兜蟲)》之銘言:
: ※ 引述《godfat (godfat 真常)》之銘言:
: : 這邊 self reflection 是指?
: 就是反射,我想handler靠的就是反射做到的吧,而反射比起直接呼叫要來得吃效能
: 所以忽略handler的寫法,就視同避免反射發生,讓效率更好
: 但這也只是我的猜測,沒有什麼根據
: http://en.wikipedia.org/wiki/Reflection_(computer_programming)
你的意思是這樣的差異嗎?
a.b 和 a.public_send(:b)
這在 ruby 裡應該不太會被叫 reflection, 因為 a.b 本來就不是 static 的。
另外 wikipedia 裡那範例不太好,他寫:
Object.const_get(:Foo).send(:new).send(:hello)
似乎用這樣比較像
Object.const_get(:Foo).method(:new).call.method(:hello).call
因為 reflection 的意思比較接近去觀察程式本身,但用 send
其實並沒有真的去觀察什麼,因為 ruby 本來就是用那種方式在跑的。
anyway... 名詞問題,不重要
: 第二個版本的程式碼我覺得很奇怪,如果說before_validation的handler是method
: 而註冊handler的功能就寫在裡面,那麼照理來說
: handler寫法會因為先被我定義的before_validation 給 override 導致無效吧……
: 但實驗結果卻還是有註冊到,百思不得其解……
: 還有更奇怪的……
我覺得... 就是說直接用 def before_validation 是 deprecated 了吧?
至於奇怪的結果,我是不想追究... 就一律用 Base.before_validation
就是了,省得跟 rails 內部打交道 :/
: 所以我被文件騙了嗎?(眼神死)
: 而我照著文件的說的做,用method define,竟然也跑出和上面同樣的警告……
: 誰可以告訴我這是為什麼Orz
我不確定文件上寫什麼,但 rails 變動太快,文件我通常是不大信的...
只看實驗結果或是 source :/
: 實驗完就到吃飯時間了,等等再查Orz
: 謝謝真常大的回覆=)
不會 :) 沒幫到什麼忙 @@
--
Nobody can take anything away from him.
Nor can anyone give anything to him.
What came from the sea,
has returned to the sea.
Chrono Cross
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.169.166.114
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章