dar*_*sky 7 model-view-controller controller ruby-on-rails devise
我有一个Accounts与Devise建立的模型.Devise使用一些属性(例如电子邮件,密码等),但我还有一些其他属性.注册时,我想以某种方式设置它们.
如何扩展注册控制器?我知道我需要实际创建一个这样的新控制器:
class AccountsController < Devise::RegistrationController
def create
super
end
end
Run Code Online (Sandbox Code Playgroud)
我可以直接添加我的代码super吗?我认为资源已经被保存为时已晚.最好的方法是什么?
如果我从头开始编写创作,我怎么知道我没有错过Devise所做的任何事情?
谢谢,
Boo*_*dow 14
根据Devise文档,是的,就像Josh的回答一样,你会改变控制器.虽然,您不必从头开始.看一下文档.
您可以生成控制器,以便添加自定义项:
Example: rails generate devise:controllers [scope]
Run Code Online (Sandbox Code Playgroud)
因此,您可以为您的用户范围运行以下内容:
rails generate devise:controllers users
Run Code Online (Sandbox Code Playgroud)
这为您提供了位于此处的文件夹中的控制器: app/controllers/users
然后,告诉您的路由文件使用该控制器.更新您的设计路线,如下所示:
devise_for :users, controllers: { sessions: "users/sessions" }
Run Code Online (Sandbox Code Playgroud)
最后,复制所有观点.如果您尚未对观点进行处理,则需要这样做.控制器已更改,因此您的视图也需要.
如果您想从头开始重写控制器以实现完全控制,请从 Registration_controller.rb源代码开始,并根据需要进行更改。
告诉设备使用您的自定义控制器就像更改路线一样简单:
devise_for :users, :controllers => { :registrations => "users/custom_controller" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8389 次 |
| 最近记录: |