use*_*154 13 ruby ruby-on-rails mongomapper devise
我想为Devise编写一个扩展,允许您使用parse_resource作为数据存储区(而不是ActiveRecord).parse_resource是Parse.com的REST api的Ruby包装器.它的界面与ActiveRecord几乎相同,并且是ActiveModel投诉.因此,Devise的扩展似乎可能不需要太多的非样板.
但是,我找不到任何教程.我所依赖的只是其他扩展的来源.从MongoMapper扩展,我认为有两个主要部分:
发电机(不是很需要)
在这里你覆盖DeviseGenerator#(generate_model|inject_devise_content|replace_default_devise_orm)
方法.
"胆量 "(非常需要)
我不太确定这里发生了什么.似乎有很多样板,有一些自定义类型转换,在底部有一个声明,我们将使用此扩展而不是默认的ORM.
这就是它的全部吗?我错过了什么?有人可以更详细地解释"胆量"中发生的事情吗?
是否有任何简单的lint测试可以确保与Devise完全兼容?
为了获得良好的开端,您还可以查看couchDB扩展和Riak扩展。您可以看到,在Hook 模块中,您覆盖了您想要/必须使 Devise 工作的任何内容。
你能看到底部的class_eval声明吗?ParseResource::Base
在那里,您可以使用模块扩展类(在您的情况下为 )Devise::Models
,该模块包含所有必要的方法(包括您可以看到的devise
著名方法),如果您想覆盖任何内容,那么接下来使用模块(MongoMapper 扩展不需要覆盖任何内容,这就是不使用此方法的原因)。因此你必须写:Hooks
module Devise
module Orm
module ParseResource
module Hooks
# here you define any overrides
end
end
end
end
ParseResource::Base.class_eval do
extend Devise::Models
extend Devise::Orm::ParseResource::Hooks
end
Run Code Online (Sandbox Code Playgroud)
之后,您必须require 'devise/orm/parse_resource'
(假设您已命名该文件parse_resource.rb
)在#{Rails.root}/config/initializers/devise.rb
初始化程序中。希望我能帮上一点忙:)
归档时间: |
|
查看次数: |
1330 次 |
最近记录: |