私はRails 4(4.2.3)アプリケーションで作業を始めました。ここでは、ユーザ認証にDevise
を使用しています。私は、テストプロジェクトを作成してuppに署名する前に、ユーザーがアプリを使って遊んで、ゲストユーザとしてサインインできるようにしたい。ユーザーがサインアップ(または)すると、テストプロジェクトを新しい現在のユーザーに割り当てる必要があります。Rails 4 - Deviseさん、ゲストユーザがフィルタチェーンを停止させました
私はPlatformatecから、このガイドを、次のされています:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user
は、ゲストユーザの作品を作成しますが、アクティブなゲストユーザセッションにサインアップするか、でたとき、私は次のエラーを取得する:
Filter chain halted as :require_no_authentication rendered or redirected
の場合私は自分のセッションをクリアする。
def current_or_guest_user
if current_user
if session[:guest_user_id] && session[:guest_user_id] != current_user.id
logging_in
guest_user(with_retry = false).try(:destroy)
session[:guest_user_id] = nil
end
current_user
else
guest_user
end
end
ゲストユーザを管理する方法は、次のようになります。ゲストユーザの作成はうまくいくようです。しかし、この論理は決して起こりません:
:# should delete the guest user and clear the session.
if current_user
if session[:guest_user_id] && session[:guest_user_id] != current_user.id
logging_in
guest_user(with_retry = false).try(:destroy)
session[:guest_user_id] = nil
end
current_user
私はゲストユーザセッションが私の新しいユーザーと競合し、(ゲストユーザがサインアップで削除されることは決してありませんので)、この考案のエラーが発生していることをかなり確信しています
Filter chain halted as :require_no_authentication rendered or redirected
残りのゲストユーザロジックは、このリンクされたガイド:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-userと多かれ少なかれ正確に見えます。また、認証段落/例:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user#authentication-this-may-interfere-with-the-current_user-helperのコードを追加しました。
Deviseを使用してサインアップしてサインインするときに私のcurrent_or_guest_user
を削除する方法はありますか?
更新が
これは私のルートは、現在どのように見えるかです:
devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
root :to => 'public#index'
resources :apps
get 'users/show', to: "users#show"
get 'users', to: "users#index"
post 'guests/receive_guest', to: "guests#receive_guest"
アップデート2
ガイドでは、次の文を持っている:
When (and if) the user registers or logs in, we delete the guest user and clear the session variable.
どのようにしてどこでやるべきか説明していません。私は再びに電話しなければならないと思います。しかし、私はDeviseに精通していないのでどこからわからないのですか?
アップデート3
はそれをもう少し明確にします。これが私が達成したいステップです。
- ユーザーがテストプロジェクトを作成します。
- テストプロジェクトの作成時に、ゲストユーザーとセッションが作成されます。ゲストユーザは、セッションが終了すると削除されます。
- ゲストユーザがサインアップすると、ログインしてテストプロジェクトを新しい実ユーザに割り当てる必要があります。
- ゲストユーザーは削除されます。
'routes.rb'ファイルを投稿できますか? –
@huzefabiyawarwala私は今それをしています。 – Anders
私は自分のマシンに実装しようとしているものを試してみましたが、うまくいきますので、あなたが作成した追加のコードに何か不足しているかもしれません。可能であれば、上記のコードを削除し、あなたが現在持っているコントローラを投稿してください。それはより簡単にデバッグすることができます。 –