認証を支援するためにdeviseを使用していますが、さまざまな理由から、登録に関する懸念と他のビジネスロジックを分離するのに役立つ User モデルのサブクラスがいくつかあります。
andのサブクラスはUser(将来的にはさらに増える可能性があります)、すべてのデータを User テーブル (別個のテーブルではありません) に格納します。AffiliateAdmin
すべてのユーザーは、デフォルト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_userand user_signed_inonly. Affiliateそのサブクラスを見て、現在のユーザー (別名: )を返さUserないのはなぜですか? andヘルパーは機能するのに、 -esqueヘルパーは機能しないのはなぜですか?user_signed_in?current_userAffiliatecurrent_affiliateaffiliate_signed_in?user
すべてがモデルをサブクラス化しているため、フレームワークが常にヘルパーを使用するようにする方法はありcurrent_userますか?user_signed_in?User