我与Devise建立了Accounts
模型。 Devise使用一些属性(例如电子邮件,密码等),但我还有一些其他属性。注册时,我想以某种方式设置它们。
如何扩展注册控制器?我知道我需要实际创建一个这样的新控制器:
class AccountsController < Devise::RegistrationController
def create
super
end
end
我可以在super
之后立即添加我的代码吗?我认为资源已经被保存为时已晚。最好的方法是什么?
如果我从头开始编写创作,我怎么知道我没有错过Devise的任何内容?
谢谢,
答案 0 :(得分:13)
根据Devise documentation,是的,就像Josh的回答一样,你会改变控制器。虽然,您不必从头开始。看一下文档。
您可以生成控制器,以便添加自定义项:
Example: rails generate devise:controllers [scope]
因此,您可以为您的用户范围运行以下内容:
rails generate devise:controllers users
这为您提供了位于此处的文件夹中的控制器: 应用/控制器/用户
然后,告诉您的路线文件使用该控制器。更新您的设计路线,如下所示:
devise_for :users, controllers: { sessions: "users/sessions" }
最后,复制所有观点。如果你尚未对观点进行处理,你需要这样做。控制器已更改,因此您的视图也需要。
答案 1 :(得分:2)
如果您想从头开始重写控制器以获得完全控制权,请从registration_controller.rb Source Code开始,并根据需要进行更改。
告诉设计使用您的自定义控制器就像更改路线一样简单:
devise_for :users, :controllers => { :registrations => "users/custom_controller" }
答案 2 :(得分:0)
如果您想要用户提供信息的字段,则无需扩展控制器 如果你想自动添加,那么不就没有理由在模型中做到这一点! (除非它取决于会话或要求)
在第一种情况下,请参阅https://github.com/plataformatec/devise#configuring-views
如果您打算更改注册流程,则应仅更改DEvise控制器。