Ruby on rails 设计:压倒会议#新行动

Ruby on rails 设计:压倒会议#新行动,ruby-on-rails,devise,Ruby On Rails,Devise,我希望在用户进入登录页面时,能够将已登录的用户发送到其他地方。现在它们被发送到根路径 我尝试在sessions controller中创建自己的新操作,但似乎不起作用。我试图在日志上打印出来测试的文本甚至没有出来,所以我认为用户被重定向到了链的某个位置 你是怎么做到的?我想你要找的是。如果在application_controller.rb文件中定义了该方法,则可以返回希望用户重定向到的任何路径 def after_sign_in_path_for(resource) if current_

我希望在用户进入登录页面时,能够将已登录的用户发送到其他地方。现在它们被发送到根路径

我尝试在sessions controller中创建自己的新操作,但似乎不起作用。我试图在日志上打印出来测试的文本甚至没有出来,所以我认为用户被重定向到了链的某个位置


你是怎么做到的?

我想你要找的是。如果在application_controller.rb文件中定义了该方法,则可以返回希望用户重定向到的任何路径

def after_sign_in_path_for(resource)
  if current_user.current_sign_in_at > 1.minute.ago
    your_own_path
  else
    super
  end
end

隐马尔可夫模型。。不,不是那样的。在成功的会话之后,您可以在那里发送“创建”。如果他们登录并试图进入登录页面,我想将他们重定向到根路径之外的其他地方。根据我的测试,我认为登录用户重新访问登录页面时,也会调用after_sign_in_path_for。如果您需要将它们发送到两个不同的地方,请尝试检查用户的当前登录时间。请看上面更新的示例。谢谢,我明白为什么我会感到困惑了。在的路径中的签名之后的第一个
if
是资源或范围。是吗?(用户)&&can?(:管理,当前站点)——我想,如果用户已经登录,并且他们进入登录页面,则返回true。但是它没有,所以我用这个创建了另一个elsif块:
user\u signed\u in?&&can?(:manage,current_site)
。在_过滤器之前设置一个
,您可以在其中检查
params[:controller]==“设计/会话”&¶ms[:action]==“新建”
,它可以工作。我可以将其放在应用程序控制器中,并在用户登录时将其重定向到某个地方。。我会试试的。不过如果有别的办法我想知道的话。因为这意味着对于每个请求,我都会在筛选器之前启动此筛选器。您可以使用
:only
选项来限制筛选器“启动”的时间。如果您担心性能问题,那么检查before_筛选器中的简单条件不太可能降低应用程序的性能。