Как создать расширение Devise? - PullRequest
3 голосов
/ 08 февраля 2012

Мне нужно создать повторно используемое расширение Devise. Это мой первый опыт создания драгоценных камней. Итак, согласно источникам других расширений Devise, я начал с создания файла devise_sms_authenticatable.rb в папке 'lib' со следующим кодом:

# 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). Что я делаю не так?

1 Ответ

2 голосов
/ 08 февраля 2012

Если вы устанавливаете модуль SmsAuthenticatable уже на Devise::Models, нет необходимости добавлять его через add_module, хотя вам может потребоваться его на config/initializers/devise (если вы пишете гем, вы может избежать этого, так как вы не будете касаться devise.rb на инициализаторах).

Вы также можете написать его код без Devise :: Models в вашей директории gem lib и добавить только эту строку

Devise.add_module :sms_authenticatable, :model => 'sms_authenticatable'

И Devise должен добавить модуль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...