ruby on rails 3-Devise::包含模型



我正试图更深入地理解Rails引擎的机制,观察设计项目的来源。

您知道,有一个模块Devise::Models,它为支持身份验证之类的模型定义了一个名为devise的方法。到目前为止一切都很好。

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

但我很难弄清楚这个模块是如何包含在模型中的。它是自动加载的还是什么的?当我在不使用生成器的情况下创建一个新模型时,地狱设计如何使devise::Models模块可访问,以便我可以直接调用devise :trackable, :stuffable

对我来说太黑暗了。任何解释都将不胜感激。

感谢您的阅读。

伙计,我觉得自己很笨。我花了很多小时来找出为什么Devise::Models模块包含在我的所有模型中,并且我可以在不引发NoMethod错误的情况下调用devise方法。

最后我找到了答案。

这个模块包含在您的设备安装使用的orm文件中。如果你不改变的话,你可以在初始化器中做这些事情。(选择正确的Orm适配器文件)

然后,包含在问题中的文件(在我的例子中,mongoid.yml)只做:

require 'orm_adapter/adapters/mongoid'
Mongoid::Document::ClassMethods.send :include, Devise::Models

希望这将激励你们,若你们愿意为你们的发动机提供同样的机制。

问候

相关内容

  • 没有找到相关文章

最新更新