加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – Rails3为可确认模块设计自定义路由

发布时间:2020-12-17 01:59:02 所属栏目:百科 来源:网络整理
导读:我试图通过设计确认他们确认他们的帐户后,将用户路由到自定义欢迎页面.自定义页面位于/ district / setup /,可通过districts_setup_path访问. 为此,我添加了自定义路线, devise_for :users,:controllers = { :registrations = 'registrations',:confirmation
我试图通过设计确认他们确认他们的帐户后,将用户路由到自定义欢迎页面.自定义页面位于/ district / setup /,可通过districts_setup_path访问.

为此,我添加了自定义路线,

  devise_for :users,:controllers => { :registrations => 'registrations',:confirmations => 'confirmations' }

并创建了自己的控制器.然后我不得不重载confirmmations_controller.rb,现在有:

(应用程序/控制器/ confirmations_controller.rb)

class ConfirmationsController | Devise::ConfirmationsController

  # GET /resource/confirmation?confirmation_token=abcdef
  def show
    self.resource = resource_class.confirm_by_token(params[:confirmation_token])

    if resource.errors.empty?
      set_flash_message(:notice,:confirmed) if is_navigational_format?
      sign_in(resource_name,resource)
      redirect_to districts_setup_path
    else
      render_with_scope :new
      # not:
      # respond_with_navigational(resource.errors,:status => :unprocessable_entity){
    end
  end
end

这很好用,但我很紧张,我不是在这种情况下以健康的方式做到这一点.特别是,我刚刚删除了response_with_navigational(…)行,我真的不明白.

我希望在Devise wiki的一个方法中写下这一切,我只是在寻找对rails来说相当新的反馈,甚至更新的Devise / engine / warden.

解决方法

看看Devise的ConfirmationsController,您可以发现受保护的方法after_confirmation_path_for(resource_name,resource).覆盖它(而不是整个动作)将以更少的努力产生相同的结果.

一般来说,覆盖Devise的控制器没有问题,因为它们代表的默认行为并不总是适合应用程序的需要.话虽如此,在覆盖Devise的代码之前,你必须先做一些事情:

> Devise不仅仅是系统的另一个组成部分 – 它处理用户身份验证,这是一个非常敏感的问题.确保在提交之前不要破坏任何重要的东西.您可以通过从github分配Devise项目,进行更改并运行测试来实现.>当您进行更改以设计和覆盖其代码时,升级到更新版本将变得更加困难,这可能与您的更改不兼容.>如果您决定进行更改,请寻找可能的最小更改以实现您的目标.在大多数情况下,Devise的团队已经预见到需要在某些地方进行定制,并留下专门为其设计的方法(如上所述).再一次,在Devise的GitHub上查看文件的代码可以让您了解根据需要自定义其行为的最佳方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读