我發現RailsCasts episode,並根據我的需要使用了這個邏輯和代碼示例。這個mapper模式是如何工作的?
但有一件事困擾我。
約束的樣子:
constraints(Subdomain.new) do ... end
使用這種代碼:
class Subdomain
def matches?(request)
....
end
end
end
和它的作品。
但我沒有得到兩件事。首先,我沒有在任何地方調用matches?
,爲什麼這個方法只是在初始化Subdomain.new
時執行?第二關注點:
第二個問題。我沒有傳遞任何參數,但它以某種方式將request
參數分配給實際的機架請求,它只是起作用。
例如,我不喜歡這種語法:
constraints(Subdomain.new) do ... end
,所以我決定把它與方法subdomain(request)
模塊,但使它模塊,它開始提高錯誤的號碼或參數錯誤(0 1)。
我發現方法matches?
是在mapper.rb
中定義的,可能是在rails的某處向後調用的,但這樣它應該被我的子域文件覆蓋?如果沒有,因爲我的matches
是類方法,它如何在沒有應用它的任何子域實例的情況下工作?
正如我所說的,一切正常,但我想知道究竟發生了什麼,因爲我不喜歡使用大衛布萊恩魔法代碼給我的東西。
閱讀一些Rails映射器模塊的源代碼沒有給我理解。
downvoting的原因,可能是? –