ruby-on-rails - 如何调用完全限定的 Devise sign_in 方法?

标签 ruby-on-rails ruby-on-rails-3 devise

我如何明确调用 Devise sign_in?我的 Controller 中已经有一个名为 sign_in 的方法.

我试过

require 'devise/controllers/sign_in_out'
  Devise::Controllers::SignInOut.sign_in @user

cannot load such file -- devise/controllers/sign_in_out


include Devise::Controllers::Helpers
  Devise::Controllers::Helpers.sign_in @user

undefined method `sign_in' for Devise::Controllers::Helpers:Module

但都没有奏效。

我也试过
alias_method :devise_sign_in, :sign_in # keep hold of the Devise sign_in method before we overwrite it.
  devise_sign_in @user

它在浏览器中工作,但是当我运行时 rspec它给出了这个错误:

/rsync/BK-Development/app/controllers/community_members_controller.rb:5:in alias_method': undefined methodsign_in' for class CommunityMembersController' (NameError) from /rsync/BK-Development/app/controllers/community_members_controller.rb:5:in'



我在这里找到了该方法的来源:

https://github.com/plataformatec/devise/blob/v2.2/lib/devise/controllers/helpers.rb

设计版本 2.2.8

最佳答案

好的,我可以使用它

include Devise::Controllers::Helpers
alias_method :devise_sign_in, :sign_in # keep hold of the Devise sign_in method before we overwrite it.
...
  devise_sign_in @user

我还是想知道如何直接调用一个方法。在 Java 中,您可以通过指定完整的包和方法来调用任何方法。在 Ruby 中也应该有一种方法可以做到这一点。

关于ruby-on-rails - 如何调用完全限定的 Devise sign_in 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24005201/

相关文章:

ruby-on-rails - 如何查找*所有*匹配类别的项目

javascript - 我的 masonry 图像仅显示在一个列中

ruby-on-rails - Rails - 做简单的除法?没那么简单

ruby-on-rails - Heroku帮助部署使用Mysql数据库的Rails应用程序

ruby-on-rails - Rails、Devise、Validatable 不起作用?

ruby-on-rails - 从 Rails 控制台运行迁移

ruby-on-rails - JRuby on Rails 部署

ruby-on-rails - 让 turbolinks 包装器与 Ruby on Rails Devise 一起工作

ruby-on-rails - 纯 HTML 和 Rails/ERB 帮助程序模板之间的性能差异

mysql - 用户记录保存到一个数据库但不在另一个数据库中