首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Devise::Models包含

Devise::Models包含
EN

Stack Overflow用户
提问于 2013-02-10 00:45:07
回答 1查看 50关注 0票数 0

我正在观察devise项目的源代码,试图更深入地了解Rails引擎的机制。

你知道,有一个模块Devise::Models,它为模型定义了一个名为devise的方法,它将支持身份验证和其他东西。到目前为止一切都很好。

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

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

这对我来说是很黑暗的。任何解释都将不胜感激。

感谢您的阅读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 20:57:24

天啊,我觉得自己很傻。我花了很多时间来弄清楚为什么我的所有模型中都包含了Devise::Models模块,而且我可以调用devise方法而不会引发NoMethod错误。

我终于找到了答案。

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

然后,包含在问题中的文件(在我的例子中是mongoid.yml)简单地执行以下操作:

代码语言:javascript
复制
require 'orm_adapter/adapters/mongoid'

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

如果你愿意为你的引擎提供同样的机制,希望这能激励你。

问候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14790289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档