我正在尝试在我的应用中实现逻辑验证码。我有一个简单的TextCaptcha搭建用于在DB中存储问题和答案。
目前我在initializers / text_captcha.rb
中有这个require 'text_captcha'
ActionController::Base.send(:include, TextCaptcha)
这在“lib / text_captcha.rb”中:
module TextCaptcha
def self.included(base)
base.send(:include, InstanceMethods)
end
module InstanceMethods
def require_text_captcha
@captcha = "hello!"
end
end
end
因此,在评论控制器中,我可以访问@captcha视图
before_filter :require_text_captcha
糟糕的是每次我做出更改时都必须重新启动webrick - 所以我认为我这样做是错误的吗?我可以摆脱初始化程序,只需要“text_captcha”我需要的地方......或者有没有办法在“models / text_capctha.rb”中执行此操作,我在开始时尝试做但可以弄明白。
答案 0 :(得分:1)
由于Rails应用中的ApplicationController
来自ActionController::Base
,您可以这样做:
require 'text_captcha'
class ApplicationController < ActionController::Base
include TextCaptcha
end
在app/controllers/application_controller.rb
?
答案 1 :(得分:0)
如果在Rails重新加载模型时TextCaptcha正在逐渐消失,则修复方法是使用to_prepare
而不是初始化程序来加载它。有关更多信息,请参阅以下资源:
官方文档:http://api.rubyonrails.org/classes/ActionDispatch/Callbacks.html#method-c-to_prepare 短博客文章:http://www.cowboycoded.com/2011/01/28/reloading-rails-3-engine-initializers-in-development/