ruby-on-rails - 如何设计 RegistrationsController 以仅在用户已登录时显示注册页面?

标签 ruby-on-rails ruby authentication devise

我试图通过谷歌和此处找到解决方案,但找不到...
This是唯一的问题。它只有一个答案并被接受但对我不起作用......这是我的代码:

class RegistrationsController < Devise::RegistrationsController

  before_filter :authenticate_user!

  def new
    puts "Method new was called"
    super
  end

end

当我未在 localhost:3000/sign_up 登录时,页面正常显示并打印 Method new was called。如果我还没有登录,我希望 Controller 将我重定向到 sign_in 页面。当然我可以在 new 方法中检查它并重定向,但这不是一个好的解决方案......我确定是一种更优雅的方式。我什至尝试使用 prepend_before_filter :authenticate_user! 但它也不起作用。

编辑

我已经在 routs.rb 中为这个 Controller 定义了路由

devise_for :users, :controllers => { :sessions => "sessions", :registrations => "registrations" }

最佳答案

Devise::RegistrationsControllerrequire_no_authentication before filter默认情况下。

所以需要跳过:

class RegistrationsController < Devise::RegistrationsController
  skip_before_filter :require_no_authentication
  before_filter :authenticate_user!

  def new
    puts "Method new was called"
    super
  end

end

关于ruby-on-rails - 如何设计 RegistrationsController 以仅在用户已登录时显示注册页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799593/

相关文章:

ruby-on-rails - rails `bundle install` 尝试在系统范围内安装

ruby-on-rails - 如何使用 Rails 在一个查询中执行多个语句?

ruby - Ruby Flow 框架的 AWS SWF API 调用日志记录

node.js - 没有用户名的 HTTP 身份验证

c# - Web API 中的 MVC-6 与 MVC-5 承载身份验证

javascript - 在 ajax :beforeSend (link_to)? 中添加额外数据

javascript - 通过单击事件分配 Rails 变量?

ruby-on-rails - ElasticSearch + Tire:或查询

ruby-on-rails - Rails 嵌套属性未更新

mongodb - Mongo "auth failed"仅用于远程连接。本地工作正常