7

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

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

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

4

2 回答 2

5

只要您满足您的必填字段,您就可以在您的示例中调用 Account.create,我很确定默认的 Devise 必填字段是登录名、密码和密码确认

我们在用于创建设计用户的 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文件中调整的方法

于 2011-01-11T08:04:50.770 回答
1

您还可以查看 Github 上的源代码,如果您想确保正确地覆盖了某些内容,并确保您没有遗漏任何处理...

https://github.com/plataformatec/devise/tree/master/app/controllers

于 2011-08-21T04:12:08.770 回答