自定义设计控制器

时间:2011-01-11 07:15:09

标签: ruby-on-rails devise controllers

我想为Devise in Rails自定义我的注册控制器。我知道你必须创建一个像这样的控制器:

class AccountsController < Devise::SessionsController
  def create
    super
  end
end

嗯,这一切都非常好。但是,让我们说我想完全控制#create行动中发生的事情。我怎么做?如何手动创建模型并将其传递给所有参数? Account.create(params [:account])会顺利处理吗?是否有一些我应该知道的内部事情,或者是我在行动中呼叫#super的唯一选择?

2 个答案:

答案 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

相关问题