我正在尝试向Devise的SessionsController添加一个before_destroy过滤器。这是我尝试过的:我创建了一个包含before_destroy过滤器的模块和另一个包含我希望它调用的方法的模块。moduleUserTrackerprepend_before_filter:stop_tracking,:only=>[:destroy]moduleTrackerStopperdefstop_tracking#DostuffendendincludeTrackerStopperend然后我尝试使用UserTracker模块扩展SessionsController。Dev
我允许我的用户拥有多个配置文件(用户有多个配置文件),其中一个是默认配置文件。在我的用户表中,我有一个default_profile_id。如何创建像Devise的current_user这样的“default_profile”,我可以在任何地方使用它?我应该把这条线放在哪里?default_profile=Profile.find(current_user.default_profile_id) 最佳答案 Devise的current_user方法如下所示:defcurrent_#{mapping}@current_#{mappi
在使用Devise的Rails3.28应用程序中,我设置了一个Controller,使用ifuser_signed_in?检查用户是否登录。一旦测试命中这条线,我总是得到一个undefinedmethod'authenticate!'对于nil:NilClass错误。我想在没有用户登录的情况下测试一些代码。我认为我需要根据DeviseWikihere中指定的选项设置测试,但是,所有说明都与rspec有关。特别是,我认为我需要具备以下条件才能在minitest中工作:RSpec.configuredo|config|config.includeDevise::TestHelpers,:t
我正在尝试使用devise和Rails发送重置密码指令。用户单击“忘记密码链接”,然后输入电子邮件地址以接收重置密码的说明。我看到电子邮件已在开发日志中发送,但我没有收到测试电子邮件,并且看到以下错误。关于我做错了什么的任何想法?Timeout::Error-executionexpired在user_mailer.rb中,我有以下内容:classUserMailerENV["EMAIL_ADDRESS"]defreset_password_instructions(record,opts={})mail(:to=>record,:subject=>"ResetPasswordInst
在尝试向我现有的Rails应用程序添加token身份验证时,我不断遇到错误,它源于设计authentication_keys。在我的Rails4应用程序中,我允许用户使用用户名或电子邮件登录,我想为API提供相同的功能。我从API登录时得到的错误如下StartedPOST"/api/v1/auth/sign_in"for127.0.0.1at2016-04-1923:40:26-0400ProcessingbyDeviseTokenAuth::SessionsController#createasJSONParameters:{"login"=>"email@example.com",
对于我的Rails3应用程序,我有如下路线设置namespace:userdoroot:to=>"reading_schedules#index"end这是我的“rakeroutes”显示的内容user_root/user(.:format){:controller=>"user/reading_schedules",:action=>"index}在我的本地机器上一切正常。但是,一旦我将站点推送到Heroku并登录,我就会在日志中收到以下错误ActionController::RoutingError(uninitializedconstantUser::ReadingSchedul
鉴于用户正在等待确认电子邮件或已收到确认电子邮件,我如何确保他们不使用重置密码过程和强制他们填写标准确认表格(使用确认电子邮件)。在我的例子中,用户必须在确认后选择一个用户名,而密码重置很烦人地绕过了这个。 最佳答案 您需要禁用User模型中的:recoverable模块,因为这是启用密码重置的原因。如果您还没有自定义该页面,您还需要删除devise/sessions/new.html.erb中的忘记密码链接。 关于ruby-on-rails-rails:Devise:make`rese
我已经实现了使用Devise自动生成用户密码的功能。现在当用户登录系统时,我想强制用户重设密码。似乎Devise中没有内置此类功能(如果我错了,请纠正我)。我可以想出几种方法来实现这一点,但我确信有一种标准方法可以做到这一点。如有任何提示,我们将不胜感激。谢谢。 最佳答案 Devise处理具有关联View的密码Controller以更改用户密码。在应用程序Controller中,您可以使用new_password_route覆盖一些设计方法,如after_sign_up_path、after_sign_in_path、after_c
我正在使用DeviseInvitable在我的应用程序上,Omniauth允许用户使用Facebook登录。我遇到的唯一麻烦是,当用户选择使用“邀请接受”页面中的链接登录Facebook时,他们会被重定向到“新用户注册”页面,其中已经填写了一些详细信息。问题因为DeviseInvitable在发送邀请时会创建新用户,所以用户无法使用发送邀请时提供的电子邮件登录。Omniauth回调Controllerdefalluser=User.from_omniauth(request.env["omniauth.auth"])ifuser.persisted?flash.notice="Sign
我在SO上找到了类似的线程,但没有一个帮助我解决了这个问题。我的路线如下:devise_for:usersdopost'/users'=>'registrations#create',:as=>'user_registration'enddevise_for:users,:controllers=>{:omniauth_callbacks=>"users/omniauth_callbacks"}我也试过:devise_for:users,:controllers=>{:omniauth_callbacks=>"omniauth_callbacks"}但我还是得到了Theaction'f