認証を支援するためにdeviseを使用していますが、さまざまな理由から、登録に関する懸念と他のビジネスロジックを分離するのに役立つ User モデルのサブクラスがいくつかあります。
andのサブクラスはUser
(将来的にはさらに増える可能性があります)、すべてのデータを User テーブル (別個のテーブルではありません) に格納します。Affiliate
Admin
すべてのユーザーは、デフォルトusers
リソース ( /users/sign_in
) 経由でログインできます。しかし、これは私が問題を抱えているところです。
/users/sign_in
ユーザーがリソース経由でサインインするuser_signed_in?
と、current_user
ヘルパーにアクセスして、他の Active Record 関連付けにアクセスできます。これは私が欲しいものです!ウーフー!これはうまくいきます。
ただし、 としてサインアップするユーザーには、同じことは当てはまりませんAffiliate
。devise は自動的にユーザーをログインさせるので (私はこれを望んでいます)、サインインしたばかりのユーザーと同じになることを期待してuser_signed_in?
いtrue
ます。これは、ユーザーがリソースcurrent_user
経由でサインアップする場合には当てはまりません。/affiliate/sign_up
Affiliate
モデルでは( user like such をサブクラス化することを思い出しclass Affiliate < User
てください)、sign_up 用にコントローラー/ビューの別のセットを (devise を通じて) 生成したので、このプロセスを少しカスタマイズできます (sign_up プロセスはこの特定のタイプに対してもう少しカスタマイズされているため)。ユーザーの)。ユーザーがこのリソースを介してサインアップする/affiliate/sign_up
と、アフィリエイトがサインアップされますがcurrent_user
、nil
現在user_signed_in?
はfalse
. しかし、ヘルパーcurrent_affiliate
は水和オブジェクトであり、affiliate_signed_in?
真実です。
私がやりたいのは、ヘルパーの1つのタイプにアクセスできるようにすることです-user_signed_in?
ヘルパーとcurrent_user
、子ではなくヘルパーaffiliate_signed_in?
とcurrent_affiliate
. アクセスしたい: current_user
and user_signed_in
only. Affiliate
そのサブクラスを見て、現在のユーザー (別名: )を返さUser
ないのはなぜですか? andヘルパーは機能するのに、 -esqueヘルパーは機能しないのはなぜですか?user_signed_in?
current_user
Affiliate
current_affiliate
affiliate_signed_in?
user
すべてがモデルをサブクラス化しているため、フレームワークが常にヘルパーを使用するようにする方法はありcurrent_user
ますか?user_signed_in?
User