0

私はDeviseの問題を解明しようとしていますが、それを理解することはできません.

次のように開始する登録コントローラー内に新しい更新メソッドを定義しました。

class RegistrationsController < Devise::RegistrationsController
def update
    debugger
    @user = session[:registered_as] 
    logger.info "user: #{@user}"
    @user = User.find(current_user.id)
... (lots of other stuff here ) ...

def create
    build_resource
    logger.debug "I'm creating a new user "

    if resource.save
    ....

私はそれを2つの形で呼んでいます。1 つは作成フォーム (機能します) を投稿し、次のように更新フォームを呼び出します。

<%= simple_form_for(session[:registered_as], :as => resource_name, :url => update_user_registration_path(resource_name), :html => { :method => :put, :class => 'form-vertical' }) do |f| %>

私が理解できないのは、私が何をしても、 create 関数へのリクエストがオーバーライドされた関数に送られ、 update_user_registration メソッドが新しいコントローラーではなく、元の Devise コントローラーにルーティングされることです。(つまり、でサーバーを起動するrails -s --debugと、RegistrationsController#update が実行されたときにデバッガーが呼び出されることはありません)。

ログ出力は次のとおりです。新しい #create メソッドからの logger ステートメントは存在しますが、デバッガーは存在しないことに注意してください。

Processing by RegistrationsController#create as */*
Parameters: {"user"=>{"email"=>"adfas@ljljla.com"}}
I'm creating a new user 
(0.1ms)  begin transaction
.... 
Reason Load (0.1ms)  SELECT "reasons".* FROM "reasons" 
Rendered devise/registrations/_thankyou.html.erb (22.2ms)
Completed 200 OK in 45ms (Views: 30.8ms | ActiveRecord: 2.6ms)

Started PUT "/user/registration.user" for 127.0.0.1 at 2013-08-20 18:11:34 -0700
Processing by Devise::RegistrationsController#update as 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"0kzemeZYdnDQdV+jQJCE+tvwprPBXKZi/R9wbjsHYds=", "user"=>{"reason_id"=>"1"}, "commit"=>"Record Your Reason"}
Completed 401 Unauthorized in 1ms

ルートファイルは次のとおりです。

authenticated :user do
   root :to => 'home#index'
 end
devise_scope :user do
 root :to => "devise/registrations#new"
 match '/user/registration' => 'devise/registrations#update', :via => :put, :as => :update_user_registration
 match '/user/confirmation' => 'confirmations#update', :via => :put, :as => :update_user_confirmation
end
devise_for :users, :controllers => { :registrations => "registrations", :confirmations => "confirmations" }
match 'users/bulk_invite/:quantity' => 'users#bulk_invite', :via => :get, :as => :bulk_invite
resources :users do
   get 'invite', :on => :member
 end
end

更新: 本当の奇妙さを説明していなかったことに気付きました。元のコントローラーに渡されるものと渡されないものがあることを説明しました。

ここで私が間違っていることについて誰か考えがありますか?

4

0 に答える 0