Re: [問題] after_initialize and after_find

看板Ruby作者 (godfat 真常)時間13年前 (2011/08/26 13:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《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
文章代碼(AID): #1ELo-n-R (Ruby)
文章代碼(AID): #1ELo-n-R (Ruby)