我想为Devise in Rails自定义我的注册控制器。我知道你必须创建一个像这样的控制器:
class AccountsController < Devise::SessionsController
def create
super
end
end
嗯,这一切都非常好。但是,让我们说我想完全控制#create
行动中发生的事情。我怎么做?如何手动创建模型并将其传递给所有参数? Account.create(params [:account])会顺利处理吗?是否有一些我应该知道的内部事情,或者是我在行动中呼叫#super
的唯一选择?
答案 0 :(得分:5)
只要您完成了必填字段,就可以在示例中调用Account.create,我很确定默认的Devise必填字段是login,password和password_confirmation
我们在用于创建设计用户的CRUD屏幕中执行此操作,
@admin = Admin.new(params[:admin])
if @admin.save
redirect_to admin_admins_path, :notice => 'New Administrator has been added'
else
render :action => "new"
end
并且您不想扩展Devise会话控制器,扩展ApplicationController的普通控制器很好,或者您可以扩展Devise :: RegistrationsController并覆盖您要在registrations_controller.rb
文件中调整的方法
答案 1 :(得分:1)
你也可以看一下Github上的来源,如果你想确定你正确地覆盖了什么,并确保你没有错过任何处理......
https://github.com/plataformatec/devise/tree/master/app/controllers