gpt4 book ai didi

ruby-on-rails - 如何访问 Devise Controller ?

转载 作者:行者123 更新时间:2023-12-03 07:14:47 24 4
gpt4 key购买 nike

设备中的 Controller 是自动生成的吗?你如何访问它们?

我知道你的看法rails 生成 devise_views

最佳答案

假设您想要查看这些 Controller 以便修改或覆盖它们,Devise 现在提供了一个简单的生成器,可以在您的应用程序中重新创建它们的 Controller ,以使这变得简单。根据the documentation (这将是最新的):

1) 使用需要范围的生成器创建自定义 Controller :

控制台

rails generate devise:controllers [scope]

如果您指定users作为范围, Controller 将在app/controllers/users/中创建。 session Controller 将如下所示:

class Users::SessionsController < Devise::SessionsController
# GET /resource/sign_in
# def new
# super
# end
...
end
<小时/>

2) 告诉路由器使用此 Controller :

devise_for :users, controllers: { sessions: "users/sessions" }
<小时/>

3) 将 View 从 devise/sessions 复制到 users/sessions。由于 Controller 已更改,因此它将不会使用位于 devise/sessions 中的默认 View 。

<小时/>

4) 最后,更改或扩展所需的 Controller 操作。

您可以完全覆盖 Controller 操作:

class Users::SessionsController < Devise::SessionsController
def create
# custom sign-in code
end
end

或者您可以简单地向其添加新行为:

class Users::SessionsController < Devise::SessionsController
def create
super do |resource|
BackgroundWorker.trigger(resource)
end
end
end

这对于在某些操作期间触发后台作业或记录事件非常有用。

请记住,Devise 使用闪现消息来让用户知道登录是否成功。 Devise 希望您的应用程序根据需要调用 flash[:notice]flash[:alert]。不要打印整个闪存哈希,仅打印特定键。在某些情况下,Devise 会向 flash 哈希添加一个 :timedout 键,该键不用于显示。如果您打算打印整个哈希,请从哈希中删除此键。

关于ruby-on-rails - 如何访问 Devise Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6234045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com