0

これは、devise セットアップ用のカスタム登録コントローラーを持っています。

  devise_for :users, controllers: {registrations: "registrations"}

そしてコントローラーで:

class RegistrationsController < Devise::RegistrationsController

  protected

    def after_update_path_for(resource)
      user_path(resource)
    end
end

それはうまくいきます。

しかし、私は omniauth 認証も持っています。これもまたうまく機能します...それだけで:

  devise_for :users, controllers: {omniauth_callbacks: "omniauth_callbacks"}
class OmniauthCallbacksController < Devise::OmniauthCallbacksController

  def all
    user = User.from_omniauth(request.env["omniauth.auth"])
        if user.persisted?
        flash.notice = "Signed in!"
        sign_in_and_redirect user
        else
        session["devise.user_attributes"] = user.attributes
        redirect_to sign_up_path
        end
  end
    alias_method :linkedin, :all
    alias_method :twitter, :all

end

ただし、おそらくすでに私の問題を確認できるように、それらを一緒に機能させる方法がわかりません。どちらも「devise_for :users」で始まるため、どちらの方法でルートファイルに配置しても、1つは機能しません仕事。

omn​​iauth_callbacks コントローラーが認証を処理している間に、登録コントローラーが「編集」アクションと「更新」アクションのみをオーバーライドするように、両方を同時に機能させるにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

routes.rb では、次のdevise_forようにコンマ区切りのパスを入れることができます -

devise_for :users, controllers: {registrations: "registrations", omniauth_callbacks: "omniauth_callbacks"}

これは機能します。

于 2013-01-07T10:18:24.277 に答える