【问题标题】:Custom Devise controller自定义设计控制器
【发布时间】:2011-01-11 07:15:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails devise controllers


    【解决方案1】:

    只要您填写必填字段,您就可以在示例中调用 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 文件中覆盖您想要调整的方法

    【讨论】:

    • 好的,谢谢。 SessionsController 是一个复制粘贴错字,我知道它应该是 RegistrationsController。
    【解决方案2】:

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

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

    【讨论】:

    • P.S. - 请注意,URL 指定了 1.3.0 版本。请务必导航到您正在使用的版本的源代码。
    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多