2013-02-09 118 views
0

我想更深入地瞭解Rails引擎機制,看設計項目的來源。設計::模型包含

你知道,那個模塊Devise::Models定義了一個名爲devise的方法,用於支持認證和內容的模型。迄今爲止都很好。

https://github.com/plataformatec/devise/blob/master/lib/devise/models.rb

但很難給我找出這個模塊是如何納入模型。它是自動加載還是其他?當我創建一個不使用生成器的新模型時,地獄設計如何使Devise :: Models模塊可訪問,以便我可以直接調用devise :trackable, :stuffable

對我來說這只是黑暗。任何解釋將不勝感激。

謝謝您的閱讀。

+0

給一些進一步的細節,我想使發動機,我想做出這樣設計的'設計方法:可追蹤的,:rememberable'這將是適合我的主機項目的模型 – Codii 2013-02-09 22:34:05

回答

0

男人,我覺得很愚蠢。我花了好幾個小時才知道爲什麼Devise::Models模塊被包含在我的所有模型中,並且我可以調用devise方法而不會引發NoMethod錯誤。

最後我找到了答案。

該模塊包含在您的設計安裝使用的orm文件中。如果您沒有在初始化程序中更改它,則會執行此操作。 (選擇正確的奧姆適配器文件)

然後包括有問題的文件(在我的情況,mongoid.yml)簡單地做:

require 'orm_adapter/adapters/mongoid' 

Mongoid::Document::ClassMethods.send :include, Devise::Models 

希望,如果你願意,這將激勵你爲你的引擎提供同樣的機制。

問候