gpt4 book ai didi

ruby-on-rails - 如何创 build 计扩展?

转载 作者:行者123 更新时间:2023-12-04 06:18:42 26 4
gpt4 key购买 nike

我需要创建可重用的 Devise 扩展。这是我第一次制作 gem 的经历。因此,根据其他 Devise 扩展的来源,我开始使用以下代码在 'lib' 文件夹中创建文件 devise_sms_authenticatable.rb:

# encoding: utf-8
unless defined?(Devise)
require 'devise'
end

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

此外,我在 'lib' 文件夹中创建了文件夹 devise_sms_authenticatable,并添加了 model.rb 代码:

# encoding: utf-8
module Devise
module Models
module SmsAuthenticatable
# ...
end
end
end

毕竟我已经将我的新扩展添加到User 模型。

class User << ActiveRecord::Base
devise ..., :sms_authenticatable
end

但应用程序因错误未初始化的常量 Devise::Models::SmsAuthenticatable (NameError) 而失败。我做错了什么?

最佳答案

如果您将 SmsAuthenticatable 模块放在 Devise::Models 上,则无需通过 add_module 添加它,尽管您可能需要在config/initializers/devise(如果您正在编写 gem,您可以避免这种情况,因为您不会在初始化器上触及 devise.rb)。

你也可以在你的 gem lib 目录中不使用 Devise::Models 编写它的代码,只添加这一行

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

Devise 应该添加模块。

关于ruby-on-rails - 如何创 build 计扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9183327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com