如何创建Devise扩展?
我需要创建可重用的设计扩展。这是我第一次创造宝石。因此,根据其他设计扩展的来源,我已经开始创建文件devise_sms_authenticatable.rb在“LIB”文件夹下面的代码:如何创建Devise扩展?
# encoding: utf-8
unless defined?(Devise)
require 'devise'
end
Devise.add_module :sms_authenticatable, :model => 'devise_sms_authenticatable/model'
另外,我创建的文件夹devise_sms_authenticatable在在'LIB'文件夹,并添加model.rb与代码:
# encoding: utf-8
module Devise
module Models
module SmsAuthenticatable
# ...
end
end
end
所有我加入后,过我对用户模型的新扩展。
class User << ActiveRecord::Base
devise ..., :sms_authenticatable
end
但申请有错误uninitialized constant Devise::Models::SmsAuthenticatable (NameError)
。我做错了什么?
如果你把SmsAuthenticatable模块已经在Devise::Models
,没有必要通过add_module
添加它,虽然你可能需要需要它config/initializers/devise
(如果你正在写一个宝石,你会避免这种情况,因为你不会在初始化器上触及devise.rb)。
你也可以写它没有制定::型号代码在你的宝石lib目录和只添加这行
Devise.add_module :sms_authenticatable, :model => 'sms_authenticatable'
,并制定应该添加模块。
太棒了!在** devise.rb **中添加**需要'devise_sms_authenticatable'**,并且一切正常!所以,直到我将它全部放入一个单独的宝石中才需要它? – tipugin 2012-02-08 04:02:34
您是否介意发布指向您在问题中引用的其他Devise扩展源的链接? – craig 2013-11-23 15:05:36